核心数据架构问题 NSDictionary?

Core Data architectural issue NSDictionary?

我想将以下子结构保存到 Core Data 中。

// Json#1

{
1 = Viktor;
2 = Fries;
3 = "0179 2147911";
custom =     {
    name = Test;
    school = Harvard;
};
id = 0232;
status = 4;
lastupdate = 111111;

}

// JSON #2

{
1 = Viktor;
2 = Fries;
3 = "0179 2147911";
custom =     {
    age = Testage;
    color = blue;
};
id = 0232;

}

用户可以在custom中自定义条目。 JSON 数据应使用相同的模型保存。

我想我必须为自定义字段使用 NSDictionary。 你怎么看? 我如何访问 NSFetchedresultController 中的自定义字段?

// 模型

class Contact: NSManagedObject {

@NSManaged var 1: String?
@NSManaged var 2: String?
@NSManaged var 3: String?
@NSManaged var id: String?
@NSManaged var status: String?
@NSManaged var lastupdate: String?
@NSManaged var id: NSDictionary?    <= Don't know how to implement it?!
}

你应该如何解决这个问题?

我会将 custom 实现为一个单独的实体,比如 CustomValue 并给它两个属性,name(可以是 "age"、"colour" 、"name"、"school" 或用户选择的任何其他内容)和 value(它将保存相应的值,“38”、"blue" 或其他)。然后定义从 Contact 实体到 CustomValue.

的一对多关系

一个小问题是 value 必须始终是同一类型(字符串可能是最简单的类型),因此您需要将该字符串转换为正确的类型(例如 [=26 的 Int =]).

如果将关系命名为 customValues,则可以使用键路径轻松访问值:myContact.customValues.namemyContact.customValues.value.