Core data 如果NSManagedObject的映射正在使用identificationAttributes,则NSFetchedResultsController不会更新

Core data 如果NSManagedObject的映射正在使用identificationAttributes,则NSFetchedResultsController不会更新,core-data,restkit,nsfetchedresultscontroller,restkit-0.20,Core Data,Restkit,Nsfetchedresultscontroller,Restkit 0.20,如果nsmanagedobject的映射包含IdentificationAttribute,并且仅从JSON更新此对象的属性值,是否有人可以确认我的经验,即NSFetchedResultsController没有执行抓取 Restkit的另一个问题是“identificationAttributes”特性的行为。如果Restkit要将json数据映射到这样一个(唯一的)核心数据对象,那么它会查看是否已经存在这个nsmanagedobject的实例。但似乎正在全局搜索此实例,也就是说,存储中只能有

如果nsmanagedobject的映射包含IdentificationAttribute,并且仅从JSON更新此对象的属性值,是否有人可以确认我的经验,即NSFetchedResultsController没有执行抓取

Restkit的另一个问题是“identificationAttributes”特性的行为。如果Restkit要将json数据映射到这样一个(唯一的)核心数据对象,那么它会查看是否已经存在这个nsmanagedobject的实例。但似乎正在全局搜索此实例,也就是说,存储中只能有一个具有此特定标识属性的特定nsmanagedobject实例。我希望不是每个商店都有一个实例,而是每个所有者都有一个实例(与此nsmanagedobject的父级所有者关系)

因此,我希望这个结构(id是标识属性值):

OwnerA/OwnerB和Owned是NSManagedObject的子类。所有映射都为所有类使用identificationAttributes以保持其唯一性

答复如下: OwnerA:
  • -->与所有者的关系(id==X)
  • -->与所有者的关系(id==Y)
  • 第二个回应是: 所有者b:
  • -->与所有者的关系(id==X)
  • -->与所有者的关系(id==Z)
  • 但相反,我从Restkit获得了以下结构:

    答复如下: OwnerA:
  • -->与所有者的关系(id==X)
  • -->与所有者的关系(id==Y)
  • 第二个回应是: 所有者b:
  • -->与拥有的关系(id=X
  • -->与所有者的关系(id==Z)
  • 但是所有者失去了与所有者的关系(id==X)

    OwnerA:
  • -->与所有者的关系(id==X)
  • -->与所有者的关系(id==Y)
  • 因为唯一一个id==X的Owned实例是由OwnerB的关系定义的

    因此,只有一个id属性为X的Owned实例。但是,如果这种独特性是由每个所有者而不是全球所有者决定的,那就更好了

    此外,如果谓词使用Owned.attributeValue==。。。NSPredicate对于检测关系中的更改是无用的。我知道,但如果NSManagedObject使用identificationAttributes,它也不会检测到该对象中的更改


    感谢您的评论。

    是的,标识是上下文的全局标识(因此数据存储),而不是基于每个“所有者”(关系)(您无法指定所有者可能是什么)

    如果您想与某个所有者一起管理事务,可以使用JSON中的嵌套来定义唯一所有者及其关系内容

    还要注意,您可以有多个标识属性(但同一实体的每个映射上的标识属性列表必须相同,否则会发生奇怪的事情)。因此,您可以通过将所有者标识复制到其他对象并在标识列表中使用该属性来模拟所有者标识。您需要将标识复制到另一个对象,无法通过关系引用它


    标识属性与FRC及其观察内容完全无关。我不是100%清楚您看到了什么,但它必须与/和/或关系内容或您不期望的新对象的创建有关。

    谢谢您的评论。“(你没有办法具体说明所有者可能是什么)“反向关系呢?我认为这确实限制了障碍。”。是的,据我所知,该工具包可用于解决一些常见的问题。但是将这个“identificationAttributes”特性仅仅暴露在全球范围内确实令人困惑。我从使用Restkit的第一刻起就已经测试过了,但我仍然希望通过使用访问器来调整映射,而不需要任何Restkit技巧。文档中甚至没有提到此功能的范围。使用此功能会改变映射数据的结构,这是不好的。我的意思是,您无法告诉RestKit对象的所有者。您将告诉它关于多个不同的实体类型和相关的标识属性。。。如果将其称为唯一标识属性会更好,因为它用于全局唯一标识。