如何从 NSNotification 对象(核心数据)中获取对象



当我添加/编辑/删除核心数据值时,我可以访问从NSManagedObjectContextObjectsDidChangeNotification收到的通知。

我从userInfo获得以下数据:

Optional([deleted: {(
    <Product: 0x7f8d1a634370> (entity: Product; id: 0xd0000000002c0000 <x-coredata://A9A941BF-C4BA-4E1F-972D-F188032C93E0/Product/p11> ; data: {
    amount = 54;
    date = "2016-01-10 17:16:53 +0000";
    name = test65;
})
)}, managedObjectContext: <NSManagedObjectContext: 0x7f8d1a705040>])

但是我无法检索更改的 Product 对象,因此我可以访问他的属性(金额、日期、名称(。

我可以看到有一个[NSObject: AnyObject]字典,但我仍然无法获取对象。

文档说:

通知object是托管对象上下文。The userInfo 字典包含以下键:NSInsertedObjectsKeyNSUpdatedObjectsKeyNSDeletedObjectsKey

每个键的值(如果可用(是NSManagedObject对象的Set

if deletedObjects = userInfo[NSDeletedObjectsKey] as? Set<Product> {
  for product in deletedObjects {
    print(product.amount)
  }
}

你必须将类型AnyObject强制转换为产品

guard let products = notification.userInfo?[NSDeletedObjectsKey] as? [Product] else {
    return
}
// you can use your products here

最新更新