Я пытаюсь использовать API CoreSpotlight
в приложении, у меня есть файл plist, который содержит несколько элементов, например, имя животного. Поэтому мне нужно установить строку title
, равную значению этого объекта, например, если пользователи ищут Lion, имя линии и, например, ее функции отображаются в центре внимания. Вот мой код:Установить свойство title из NSarray в CSSearchableItemAttributeSet
- (void)setupCoreSpotlightSearch
{
CSSearchableItemAttributeSet *attibuteSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(__bridge NSString *)kUTTypeImage];
NSURL *url = [[NSBundle mainBundle] URLForResource:@"animals" withExtension:@"plist"];
NSArray *playDictionariesArray = [[NSArray alloc ] initWithContentsOfURL:url];
NSString *getNames = [NSString stringWithFormat:@"%@",playDictionariesArray];
NSLog(@"%@",getNames) ;
attibuteSet.title =getNames;
attibuteSet.contentDescription = @"blah blah ";
CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:@"app name"
domainIdentifier:@"com.compont.appname"
attributeSet:attibuteSet];
if (item) {
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:^(NSError * _Nullable error) {
if (!error) {
NSLog(@"Search item indexed");
}
}];
}
}
Проблема заключается в том getNames
возвращает все имена !!! как я могу отфильтровать его, когда пользователь ищет определенное слово от animals.plist
Спасибо.
Почему вы удалили 'attibuteSet.title' ?? Это моя основная проблема и должна иметь значение –
playDictionariesArray будет содержать список всех имен. Таким образом, вы можете установить заголовок как 'attributeSet.title = object'. Вы можете проверить изменение. –
Я изменяю объект на 'for (NSString * name в playDictionariesArray)' и устанавливает 'attributeSet.title = name', но проблема в том, что последний элемент моего файла plist доступен для поиска, который является' Birds' У меня есть много других животных! –