iOS 9 App Search sendUserActivityToServer 失效后,什么都不做
iOS 9 App Search sendUserActivityToServer after it had been invalidated, so doing nothing
我想将我的笔记编入索引以进行全局搜索。我用了a tutorial by Ray Wenderlich。
我将字符串添加到 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, called on activity
EC1785C0-2904-4F0A-9885-F4DB91C4B245 after it had been invalidated, so
doing nothing.
我没有使用过 AppSearch。但我的猜测是它可能与对象生命周期有关。
在您发布的代码中没有对 NSUserActivity
对象的引用,因此在执行循环体后立即释放它。
我认为该对象应该持续存在,直到 resignCurrent
在 activity 上被调用。
并且要警惕,因为Note
在你的代码中是一个结构体,它有一个值语义,所以每次处理它都会被复制。
我想将我的笔记编入索引以进行全局搜索。我用了a tutorial by Ray Wenderlich。
我将字符串添加到 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, called on activity EC1785C0-2904-4F0A-9885-F4DB91C4B245 after it had been invalidated, so doing nothing.
我没有使用过 AppSearch。但我的猜测是它可能与对象生命周期有关。
在您发布的代码中没有对 NSUserActivity
对象的引用,因此在执行循环体后立即释放它。
我认为该对象应该持续存在,直到 resignCurrent
在 activity 上被调用。
并且要警惕,因为Note
在你的代码中是一个结构体,它有一个值语义,所以每次处理它都会被复制。