Использование NSUserActivity и CoreSpotlight

Я потратил много времени, чтобы найти преимущества NSUserActivity перед CoreSpotlight, но практически ничего не нашел.

На самом деле он не смог проиндексировать наш элемент, который мы установили через NSUserActivity. Я прикрепил свой фрагмент ниже, который должен работать в соответствии с документацией Apple, однако это не так.

        let personName = "Jon Doe"
        let activity = NSUserActivity(activityType: "com.SearchAPIs.test”)
        activity.userInfo = ["name": "Jon Doe"]
        activity.title = person.name
        let keywords = personName.componentsSeparatedByString(" ")
        activity.keywords = Set(keywords)
        activity.eligibleForSearch = true
        activity.eligibleForPublicIndexing = true
        activity.expirationDate = NSDate().dateByAddingTimeInterval(16666600)
        activity.becomeCurrent()

хотелось бы найти ответ

Почему нам нужно использовать NSUserActivity для поиска, если это возможно с CoreSpotlight?


person virus    schedule 21.08.2015    source источник
comment
ответ на ваш второй вопрос здесь: stackoverflow.com/a/33768885/1757229   -  person sash    schedule 18.11.2015


Ответы (1)


Согласно документации Apple

Чтобы гарантировать, что действие и его метаданные будут проиндексированы, вы должны хранить сильную ссылку на действие до тех пор, пока оно не будет добавлено в индекс. Есть два способа сделать это: Первый способ — присвоить действие свойству в объекте контроллера, который создает действие. Второй способ — использовать свойство userActivity объекта UIResponder. Если вы используете второй способ, вам необходимо установить метаданные, такие как информация в свойстве userInfo, в методе updateUserActivityState:; в противном случае метаданные, которые вы установили для действия, не будут сохранены.

Ваша активность освобождается перед индексацией, и лучше всего сохранить ее с помощью self .

И ответ на ваш второй вопрос остается для меня загадкой.

Возможно, дело в производительности, отсутствии элементов в индексировании и, что немаловажно, в общедоступном индексировании, которое CoreSpotlight не предлагает. Нам нужно немного подождать, чтобы получить ответ на ваш вопрос.

person Community    schedule 25.08.2015
comment
@ user3745996 можно ли одновременно индексировать несколько действий, например, для использования цикла for или чего-то еще. - person The iCoder; 19.10.2015