gpt4 book ai didi

arrays - 如何将 NSManagedObject 值转换为具有键和值对的字典?

转载 作者:行者123 更新时间:2023-11-30 11:30:53 25 4
gpt4 key购买 nike

我在我的应用程序中设置了核心数据,这样当没有互联网连接时,应用程序将在本地保存数据。一旦建立连接,它将触发在线模式,然后我需要将存储在 Core Data 中的数据发送到我的数据库。

我的问题是如何将一个实体变成这样的字典:

<Response: 0x1c0486860> (entity: AQ; id: 0xd000000000580000 <x-coredata://D6656875-7954-486F-8C35-9DBF3CC64E34/AQ/p22> ; data: {
amparexPin = 3196;
dateFull = "\"10/5/2018\"";
finalScore = 34;
hasTech = No;
intervention = Before;
responseValues = "(\n 31,\n 99,\n 82,\n 150,\n 123,\n 66,\n 103,\n 125,\n 0,\n 14\n)";
timeStamp = "\"12:47\"";
who = "Luke";
})

进入此:

amparexPin: 5123
timeStamp: 10:30
hasTech: No
intervention: Before

基本上是一个字典,我试图对每个实体的每组数据执行相同的操作。我知道这听起来过于复杂,但每个实体都必须经过相同的过滤器/函数,然后将其数据发送到数据库。对此的任何帮助都会很棒!

最佳答案

我看到有两种方法可以到达这里。第一个是拥有一个带有一些“编码”函数的协议(protocol),每个托管对象类在扩展中实现 toDictionary() -> [String, Any?] ,然后在每个对象上调用此函数发送。
这种方式的优点是您可以更精确地控制实体和字典之间的每个映射,缺点是您需要为核心数据模型中的每个实体实现它。

另一种方法是利用NSEntityDescription和 KVC 提取一个函数中的所有值。此类包含所有属性的字典,attributesByName,可用于使用键值编码提取所有值。根据您是否需要映射值的数据类型,您可以从 NSAttributeDescription 中获取。 (如果您需要处理关系等,还有 propertiesByName)。

一个简化的示例。 (直接写在这里,不保证它能编译)

static func convertToDictionary(object: NSManagedObject) -> [String, Any?] {
let entity = object.entity
let attributes = entity.attributesByName

var result: [String: Any?]
for key in attributes.keys {
let value = object.valueForKey: key)
result[key] = value
}
}

关于arrays - 如何将 NSManagedObject 值转换为具有键和值对的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50273934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com