iOS 9 App Search sendUserActivityToServer после того, как он был признан недействительным, поэтому ничего не делал
Я хочу проиндексировать свои заметки для глобального поиска. Я использовал этот учебник https://www.raywenderlich.com/116608/ios-9-app-search-tutorial-introduction-to-app-search
Я добавил строку в info.plist:
"myapp.com.notes.note"
Вот мой объект:
struct Note {
public static let domainIdentifier = "myapp.com.notes.note"
public var userActivityUserInfo:[String: Any] {
return ["id": note_id]
}
public var userActivity: NSUserActivity {
let activity = NSUserActivity(activityType: Note.domainIdentifier)
activity.title = "\(note.title)"
activity.userInfo = userActivityUserInfo
activity.keywords = [note.title, note.text]
return activity
}
}
Но я не понимаю, как мне это зарегистрировать. На мой взгляд, контроллер я пытался:
override func viewDidLoad() {
super.viewDidLoad()
for note in self.notes {
note.userActivity.becomeCurrent()
}
}
Но всегда получайте:
sendUserActivityToServer, вызванный действием EC1785C0-2904-4F0A-9885-F4DB91C4B245 после того, как он был признан недействительным, поэтому ничего не делал.
1 ответ
Я не работал с AppSearch. Но я думаю, это может быть связано с жизненным циклом объекта.
В размещенном вами коде нет ссылок на NSUserActivity
объект, поэтому он освобождается сразу после выполнения тела цикла.
Я считаю, что объект должен сохраняться до resignCurrent
называется по активности.
И быть бдительным, потому что Note
это структура в вашем коде, и она имеет семантическое значение, поэтому она копируется каждый раз, когда вы с ней работаете.