基本上,我有一个 masterView Controller ,它有 3 个容器,我正在更新一个 NSManagedObject,例如Person.firstName = "Ehab")!
在其他 2 个容器中,一个有属性 [Person],另一个有属性 [Person: String],这两个集合属性都有已更改的记录。
我正在寻找的是,当我更改 (Person.firstName = "taylor") 时,我需要其他 2 个类如何通知数组和字典有关刚刚发生的更改!
一种方法是使用 NotoficationCenter 并在 UserInfo 中传递修改后的对象。但是有更简单的方法吗??
使用 NSManagedObjectContextObjectsDidChange
在你的 2 个容器 viewDidLoad
中,添加一个观察者
override func viewDidLoad() {
super.viewDidLoad()
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(managedObjectContextObjectsDidChange(_), name: Notification.Name.NSManagedObjectContextObjectsDidChange, object: yourManagedObjectContext)
@objc func managedObjectContextObjectsDidChange(_ notification: Notification){
guard let userInfo = notification.userInfo else {
return
}
if let updates = userInfo[NSUpdatedObjectsKey] as? Set<NSManagedObject> {
for update in updates {
if let person = update as? Person {
// update person info here
}
}
}
}
希望这对您有所帮助。
关于ios - 如何从 2 个不同的 View Controller 观察 NSManagedObject 记录的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719086/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |