# Titanium.App.iOS.SearchableIndex

> The SearchableIndex module is used to add or remove Ti.App.iOS.SearchableItem objects from the device search index.

- Source: https://titaniumsdk.com/docs/sdk/Titanium.App.iOS.SearchableIndex
- Titanium SDK version: 13.4.1
- 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 following 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.

## 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({
    identifier:"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));
    }
});
```

## Methods

### addToDefaultSearchableIndex

- Platforms: iPhone, iPad, macOS

Adds an array of Titanium.App.iOS.SearchableItem objects to the default search index.

Parameters:

- `Array` (Array<Titanium.App.iOS.SearchableItem>): Array of Titanium.App.iOS.SearchableItem objects to be added to the default search index.
- `callback` (Callback<Dictionary>): Function to invoke on success or failure of adding the array Titanium.App.iOS.SearchableItem object to the default search index.

### deleteAllSearchableItemByDomainIdentifiers

- Platforms: iPhone, iPad, macOS

Removes search items based on an array of domain identifiers.

Parameters:

- `Array` (Array<String>): Array of domain identifiers to be removed from the default search index.
- `callback` (Callback<Dictionary>): Function to invoke on success or failure of removing search items from the default search index.

### deleteAllSearchableItems

- Platforms: iPhone, iPad, macOS

Removes all search items added by the application.

Parameters:

- `callback` (Callback<Dictionary>): Function to invoke on success or failure of deleting all search items.

### deleteSearchableItemsByIdentifiers

- Platforms: iPhone, iPad, macOS

Removes search items based on an array of identifiers.

Parameters:

- `Array` (Array<String>): Array of identifiers to be removed from the default search index.
- `callback` (Callback<Dictionary>): Function to invoke on success or failure of removing search items from the default search index.

### isSupported

- Platforms: iPhone, iPad, macOS

Indicates whether indexing is supported by the device.

Returns: Boolean

## Inherited members

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

- [Titanium.Proxy](https://titaniumsdk.com/docs/sdk/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`.

