gpt4 book ai didi

swift - NSManagedObject 的变化反射(reflect)了动态变化

转载 作者:行者123 更新时间:2023-11-28 08:29:37 24 4
gpt4 key购买 nike

我希望我 View 中的某些标签始终显示 NSManagedObject 属性的实际状态。

例如,我在 View 中有 firstNameLabel。我用 NSManagedObject.firstName 中的数据填充它。如何在 NSManagedObject 更新时即时更新数据?我有一堆这样的标签。

我读到我需要监视 NSManagedObjectContextObjectsDidChangeNotification 并检查该上下文的所有更改,但这是唯一的方法,我们不是有更简单的方法吗?我将如何检查更改是否已在我想要的 NSManagedObject 中完成(例如,如果我更改了 1000 个对象,但我只需要更新一个对象的数据)。

最佳答案

解决方法:

var yourObject: YourManagedObjectClass! // here your example object

override func viewDidLoad() {
// … your other init code
// don't forget to remove observer

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.objectContextObjectsDidChange(_:)), name: NSManagedObjectContextObjectsDidChangeNotification, object: yourObject.managedObjectContext)
}

/// Object did changed, let's look what had changed
func objectContextObjectsDidChange(notification: NSNotification) {
guard let userInfo = notification.userInfo,
let updatedObjects = userInfo[NSUpdatedObjectsKey] as? Set<NSManagedObject> where updatedObjects.count > 0 else { return }

for object in updatedObjects {
if let updatedObject = object as? YourManagedObjectClass where updatedObject.objectID == yourObject.objectID {
// Data changed in our object, you can refresh your label here
// Don't forget about threads if your object wasn't in main context

label.text = updatedObject.text
return
}
}
}

关于swift - NSManagedObject 的变化反射(reflect)了动态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com