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

时间:2016-01-10 17:34:08

标签: ios swift core-data

我可以在添加/编辑/删除核心数据值时访问从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]字典,但我仍然无法获得该对象。

2 个答案:

答案 0 :(得分:6)

文档说:

  

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

每个密钥的值(如果可用)是SetNSManagedObject个对象。

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

答案 1 :(得分:-1)

您必须将AnyObject类型转换为Product

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