1

任何人都可以证实我的经验,这显示了NSFetchedResultsController不执行取如果一个nsmanagedobject映射包含identificationAttributes这个对象只是属性的值被从更新JSON?如果NSManagedObject映射使用identificationAttributes然后NSFetchedResultsController不更新

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

所以这个结构我希望(id是标识属性值):

OwnerA/OwnerB拥有是NSManagedObject的子类。所有映射使用所有类的identificationAttributes来保持它们的独特性。

响应随附: OwnerA:

  • - > relatioship到自有(ID == X)
  • - > relatioship到自有(ID == Y)
  • 第二响应随附: OwnerB:

  • - > relatioship以自有(ID == X)
  • - > relatioship以自有(ID == Z)
  • 而是我从Restkit得到这个S tructure:

    响应随附: OwnerA:

  • - > relatioship到自有(ID == X)
  • - > relatioship到自有(ID == Y)
  • 第二响应来用: OwnerB:

  • - > relatioship到自有(ID == X
  • - > relatioship到自有(ID == Z)
  • 的OwnerA失去其对拥有关系(ID == X)

    OwnerA:

  • - > relatioship到自有(ID == X)
  • - > relatioship到自有( id == Y)
  • 作为拥有此id的唯一单个实例== X由来自OwnerB的关系定义。

    所以只有拥有id属性的单个实例X。但是,如果这种独特性是按每个所有者而不是全球来规定的,那将会更好。

    与id属性X如果断言是使用与Owned.attributeValue语句不被NSFetchedResultsController事件注册的国有此外更新== ... NSPredicate是无用的检测关系的变化。我知道,但它也不会检测nsmanagedobjects中的更改,如果此类对象正在使用identificationAttributes

    感谢您的评论。

    回答

    0

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

    如果您想要管理某些所有者的事情,可以在JSON中使用嵌套来定义唯一所有者及其拥有的关系内容。请注意,您可以拥有多个标识属性(但同一个实体的每个映射上的标识属性列表必须为必须为才会发生相同或奇怪的事情)。因此,您可以通过将所有者身份复制到其他对象并在识别列表中使用该属性来模拟所有权身份。您需要将身份复制到另一个对象,但不能通过关系来引用它。

    识别属性与FRC以及它正在观察的内容完全无关。我不是100%清楚你看到的内容,但它必须与/和/或关系内容或创建你不期望的新对象相关。

    +0

    谢谢你的评论。 “(你没有办法指定所有者可能是什么)” 那么逆关系呢? –

    +0

    我认为这确实限制了障碍。是的,我了解该工具包已准备好为一些常见问题提供服务。但是,将这种“识别特性”特征暴露给全球范围实在令人困惑。我从第一次使用Restkit开始就测试了这个功能,但我仍然希望使用访问器以某种方式调整映射,而没有使用Restkit功能。它甚至没有在文档中提到这个特性的范围是什么.http://restkit.org/api/0.20.0-pre2/Classes/RKEntityMapping.html使用这个特性改变了映射数据的结构,这是不好的。 –

    +0

    我的意思是你没有办法告诉RestKit一个对象的所有者。你会告诉它关于多种不同的实体类型和相关的标识属性......如果它被称为唯一标识属性会更好,因为它旨在用于全球唯一标识。 – Wain

    相关问题