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

    相關問題