如何将Swift CoreData值保存到数组中
我是Swift和CoreData的新手,我有一个问题,就是如何读取存储在CoreData(NsManagedObject)中的数据并将其保存到一个数据数组中,该数组可以用作SwiftUI折线图的输入 我的测试数据模型很简单:如何将Swift CoreData值保存到数组中,swift,core-data,Swift,Core Data,我是Swift和CoreData的新手,我有一个问题,就是如何读取存储在CoreData(NsManagedObject)中的数据并将其保存到一个数据数组中,该数组可以用作SwiftUI折线图的输入 我的测试数据模型很简单: @NSManaged public var date: Date? @NSManaged public var value: Double 我可以使用以下代码读取值的数量: private func fetchItem() { withAnimation
@NSManaged public var date: Date?
@NSManaged public var value: Double
我可以使用以下代码读取值的数量:
private func fetchItem() {
withAnimation {
let fetchRequest: NSFetchRequest<Rate> = Rate.fetchRequest()
do {
let fetchedResults = try viewContext.fetch(fetchRequest)
print("#Entities: \(fetchedResults.count)")
} catch {
print(error)
}
}
}
问题:
如何从NSManagedObject值创建具有双值的数组
问候,,
Ralf您希望将一个速率数组(即
[Rate]
)转换为一个Double数组(即Double
),其中将填充每个速率的值
这是map()
的工作!
它正是这样做的:迭代初始数组,对于每个元素(这里是Rate
元素),返回您想要从中提取的内容(这里只是它的属性值
)
快速回答和“快速”回答:
更明确地说:
let data = fetchedResult.map { aRate in
return aRate.value
}
手动完成:
var data: Double = []
for aRate in fetchedResults {
data.append(aRate.value)
}
注意:map
在一行中非常快速,但是任何人都不应该批评manuelfor
循环的使用。这是基本算法,理解它们是如何发展的坚实基础。因此,如果这仍然是您的知识水平,我建议使用for循环。因为如果您需要更改映射的输出/结果
,您能这样做吗?假设值+值的偏移量为30,全部为绝对值?非常感谢-你救了我一天。我使用了for循环,它的工作原理如所述。祝您有个美好的一天。
let data = fetchedResult.map { aRate in
return aRate.value
}
var data: Double = []
for aRate in fetchedResults {
data.append(aRate.value)
}