Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Swift CoreData值保存到数组中_Swift_Core Data - Fatal编程技术网

如何将Swift CoreData值保存到数组中

如何将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

我是Swift和CoreData的新手,我有一个问题,就是如何读取存储在CoreData(NsManagedObject)中的数据并将其保存到一个数据数组中,该数组可以用作SwiftUI折线图的输入

我的测试数据模型很简单:

@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
在一行中非常快速,但是任何人都不应该批评manuel
for
循环的使用。这是基本算法,理解它们是如何发展的坚实基础。因此,如果这仍然是您的知识水平,我建议使用for循环。因为如果您需要更改
映射的输出/结果
,您能这样做吗?假设值+值的偏移量为30,全部为绝对值?

非常感谢-你救了我一天。我使用了for循环,它的工作原理如所述。祝您有个美好的一天。
let data = fetchedResult.map { aRate in 
    return aRate.value
}
var data: Double = []
for aRate in fetchedResults { 
    data.append(aRate.value)
}