簡體   English   中英

在 Coredata 中存儲自定義 Class 類型數組

[英]Storing Custom Class type array in Coredata

我正在嘗試將自定義 class 類型數組存儲在 coredata 中。

我設置的是一個名為Node的實體,其屬性value string 類型, children項類型為Transformable children屬性應該存儲一個Node類型的數組,如下面的代碼所示。

public class Node: NSManagedObject {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Node> {
        return NSFetchRequest<Node>(entityName: "Person")
    }

    @NSManaged public var children: [Node]?
    @NSManaged public var value: String?

}

.xcdatamodel設置:

在此處輸入圖像描述

目前應用程序崩潰並顯示錯誤消息“此解碼器將僅解碼采用 NSSecureCoding 的類。Class 'Node' 不采用它。” 所以我用字符串數組而不是節點數組嘗試了它,它似乎工作。

我猜需要做一些額外的事情來存儲自定義數組類型。

聽起來您想要一個遞歸數據結構,其中每個節點可以有許多其他節點作為子節點,另一個節點作為其父節點。 這就是 CoreData 關系的用途。

在您的Node實體下:

  1. 使用目標Node添加類型為“To Many”的關系children項。 沒有逆。
  2. 添加類型為“To One”的關系parent節點與目標Node ,將其逆設置為children節點
  3. Go 返回children關系並將其逆設置parent
  4. 考慮刪除規則應該是什么。 我建議為children使用“Cascade”,這意味着如果你刪除一個父級,它的所有子級也會被刪除。 “無效”對parent有意義,這意味着如果您刪除一個孩子,它只會刪除父母與該孩子的連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM