在数据库中存储数组属性
Store an Array attribute in the Data Base
我的实体中有一个属性应该存储多个 Int。
这是从 API 收到的 JSON 看起来像
{
"type": “KsCell”,
“id”: 23,
“allowedSize”: [1,2],
},
如何在 xcdatamodeld 中 declare/store 这个?
这是我可以选择的属性列表,没有数组
Core Data 中没有 "native" 数组或字典类型。您可以将 NSArray 或 NSDictionary 存储为可转换属性。这将使用 NSCoding 将数组或字典序列化为 NSData 属性(并在访问时适当地反序列化)。 - src
因此,可能的解决方案可能是使用 Transformable 类型。
例如,您可以在 NSManagedObject 中将其声明为:
@NSManaged var allowedSizes: [NSNumber]
并从 json
分配您解析的整数数组
myObject!.allowedSizes = allowedSizeArray //[1,2]
另一种解决方案是使用 NSKeyedArchiver 将您的数组转换为 NSData。
let allowedSizes = NSKeyedArchiver.archivedDataWithRootObject(allowedSizeArray) // NSData
我的实体中有一个属性应该存储多个 Int。 这是从 API 收到的 JSON 看起来像
{
"type": “KsCell”,
“id”: 23,
“allowedSize”: [1,2],
},
如何在 xcdatamodeld 中 declare/store 这个?
这是我可以选择的属性列表,没有数组
Core Data 中没有 "native" 数组或字典类型。您可以将 NSArray 或 NSDictionary 存储为可转换属性。这将使用 NSCoding 将数组或字典序列化为 NSData 属性(并在访问时适当地反序列化)。 - src
因此,可能的解决方案可能是使用 Transformable 类型。
例如,您可以在 NSManagedObject 中将其声明为:
@NSManaged var allowedSizes: [NSNumber]
并从 json
分配您解析的整数数组myObject!.allowedSizes = allowedSizeArray //[1,2]
另一种解决方案是使用 NSKeyedArchiver 将您的数组转换为 NSData。
let allowedSizes = NSKeyedArchiver.archivedDataWithRootObject(allowedSizeArray) // NSData