Использование 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?
1 ответ
Согласно документации Apple
Чтобы гарантировать, что действие и его метаданные будут проиндексированы, вы должны хранить строгую ссылку на действие, пока оно не будет добавлено в индекс. Есть два способа сделать это: Первый способ - назначить действие свойству в объекте контроллера, который создает действие. Второй способ - использовать свойство userActivity объекта UIResponder. Если вы используете второй способ, вам нужно установить метаданные, такие как информация в свойстве userInfo, в updateUserActivityState: method; в противном случае метаданные, заданные вами для действия, не будут сохранены.
Ваша деятельность освобождается до того, как она будет проиндексирована, и лучше всего ее сохранить. self
,
И ответ на ваш второй вопрос остается для меня загадкой.
Может быть, это как производительность, отсутствие элементов индексации и, что важно, общедоступная индексация, которую не предлагает CoreSpotlight. Нам нужно немного подождать, чтобы получить ответ на ваш вопрос.