# Titanium.App.iOS.SearchableItem

> Used to create a unique object containing all of the search information that will appear in the device search index.

- Source: https://titaniumsdk.com/docs/sdk/12.6.2/Titanium.App.iOS.SearchableItem
- Titanium SDK version: 12.6.2
- Kind: proxy
- Platforms: iPhone, iPad, macOS
- Since: Titanium SDK 5.0.0
- Extends: Titanium.Proxy
- Inheritance: Titanium.Proxy

To effectively add and remove information from the iOS search index you will need to use the below listed modules:

* [Titanium.App.iOS.SearchableItemAttributeSet](https://titaniumsdk.com/docs/sdk/Titanium.App.iOS.SearchableItemAttributeSet.md) - Used to create metadata related to the `Ti.App.iOS.SearchableItem`
* [Titanium.App.iOS.SearchableItem](https://titaniumsdk.com/docs/sdk/Titanium.App.iOS.SearchableItem.md) - Used to assemble metadata into a unique object package to be used by `Ti.App.iOS.SearchableIndex`
* [Titanium.App.iOS.SearchableIndex](https://titaniumsdk.com/docs/sdk/Titanium.App.iOS.SearchableIndex.md) - Used to add and remove `Ti.App.iOS.SearchableItem` objects to the device search index

To use this feature make sure you have a compatible device running iOS 9 or later.

To create a SearchableItem object, use the Titanium.App.iOS.createSearchableItem method.
Pass a dictionary of properties to the method that will help identify the item.
At minimum, you must set the [attributeSet](https://titaniumsdk.com/docs/sdk/Titanium.App.iOS.SearchableItem.md#attributeSet) property, which associates
the metadata with the SearchableItem object.

Then, pass the SearchableItem object to a SearchableIndex object's
[addToDefaultSearchableIndex()](https://titaniumsdk.com/docs/sdk/Titanium.App.iOS.SearchableIndex.md#addToDefaultSearchableIndex) method to add the item
to the device's search index.

## Example: Add Searchable Content to the On-Device Index

The following example demonstrates how to create a new Ti.App.iOS.SearchableItem and
add a Ti.App.iOS.SearchableItemAttributeSet. The Ti.App.iOS.SearchableItem is then passed to the
Ti.App.iOS.SearchableIndex object to add it to the on-device search index.

#### app.js
``` js
var searchItems = [];
var itemAttr = Ti.App.iOS.createSearchableItemAttributeSet({
    itemContentType: Ti.App.iOS.UTTYPE_IMAGE,
    title:"Titanium Core Spotlight Tutorial",
    contentDescription:"Tech Example \nOn: " + String.formatDate(new Date(),"short"),
    keywords:["Mobile","Appcelerator","Titanium"]
});

var item = Ti.App.iOS.createSearchableItem({
    uniqueIndentifier:"my-id",
    domainIdentifier:"com.mydomain",
    attributeSet:itemAttr
});
searchItems.push(item);

var indexer = Ti.App.iOS.createSearchableIndex();

indexer.addToDefaultSearchableIndex(searchItems,function(e){
    if(e.success){
        alert("Press the home button and now search for your keywords");
    }else{
        alert("Errored: " + JSON.stringify(e.error));
    }
});
```

## Properties

### attributeSet

- Type: Titanium.App.iOS.SearchableItemAttributeSet
- Platforms: iPhone, iPad, macOS

Set of metadata properties to display for the item.

Must be set to create a SearchableItem object.

### domainIdentifier

- Type: String
- Platforms: iPhone, iPad, macOS

Identifier that represents the "domain" or owner of this item.

### expirationDate

- Type: String
- Platforms: iPhone, iPad, macOS

Searchable items have an expiration date or time to live.  By default it is set to one month.

Absolute date after which the activity is no longer eligible to be indexed or handed off.

The date will be a string in the following format: "yyyy-MM-dd'T'HH:mm:ss.SSS'+0000'"
For example, `2015-12-25T23:30:55.978+0000`

### uniqueIdentifier

- Type: String
- Platforms: iPhone, iPad, macOS

Unique identifier to your application group.

## Inherited members

6 members are inherited. Each is documented on the type that declares it.

- [Titanium.Proxy](https://titaniumsdk.com/docs/sdk/12.6.2/Titanium.Proxy.md): `addEventListener`, `apiName`, `applyProperties`, `bubbleParent`, `fireEvent`, `removeEventListener`

---

- This corpus documents Titanium SDK 13.4.1. Anything here that does not name a version describes 13.4.1.
- Titanium is maintained by TiDev. The Appcelerator toolchain is retired: there is no `appc` CLI, no Appcelerator Studio and no hosted build service. The supported CLI is `titanium` on npm, invoked as `ti`.

