有两个realm
对象类,一个是Entry
,另一个是Work
。模型场景如下所示。Entry
类为
open class Entry: Object {
dynamic open var date = Entry.defaultDate()
dynamic open var quantity = 0.0
dynamic open var percentage = 0.0
dynamic open var goal = 0.0
open let gulps = List<Work>()
}
Work 类如下所示。
open class Work: Object {
dynamic var quantity = 0.0
dynamic var type = 0
}
插入一些数据后,一个 Entry
对象如下所示。
(Entry {
date = 2017-11-29;
quantity = 1.193675890564919;
percentage = 59.68379452824593;
goal = 2;
gulps = RLMArray <0x6040000e7800> (
[0] Work {
quantity = 0.5;
type = 0;
},
[1] Work {
quantity = 0.5;
type = 1;
},
[2] Work {
quantity = 0.09683794528245926;
type = 0;
},
[3] Work {
quantity = 0.09683794528245926;
type = 2;
}
);
})
现在我正在尝试创建一个数组,其中包含根据 Work
类型的总数量,其中数组索引根据 Work
类型。因此该条目的数组应该是。
[0.59683,0.5,0.09683794528245926]
那么如何有效地生成这个数组呢?
最佳答案
这应该相当简单,定义一个与数量属性匹配的类型数组,然后循环遍历返回数量的 gulps 数组
let workArray: [Double] = entry.gulps.map({ return $0.quantity })
map
函数将迭代列表中的每个项目,并运行您在大括号之间定义的闭包,在这种情况下,它将迭代每个工作项目并仅返回数量。
您可以了解更多 map 功能here或者苹果官方文档是 here
这是我在 Playground 上编写的完整工作示例
struct Entry {
var quantity = 0.0
var percentage = 0.0
var goal = 0.0
var gulps = [Work]()
}
struct Work {
var quantity = 0.0
var type = 0
}
let work1 = Work(quantity: 1.0, type: 5)
let work2 = Work(quantity: 2.0, type: 5)
let work3 = Work(quantity: 4.0, type: 5)
let work4 = Work(quantity: 6.0, type: 5)
let entry = Entry(quantity: 5.0, percentage: 50.0, goal: 60.0, gulps: [
work1,
work2,
work3,
work4
])
let workArray: [Double] = entry.gulps.map({ return $0.quantity })
print(workArray)
Output: [1.0, 2.0, 4.0, 6.0]
关于ios - 快速总结 Realm 对象数组中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47547432/