ios - 快速总结 Realm 对象数组中的属性

标签 ios swift realm real-mode

有两个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/

相关文章:

ios - 尝试打开相机 View 时 zbar 卡住

ios - 如何在通过线程执行工作负载时为微调器设置动画

ios - 从 UICollectionView 中删除单元格而不从顶部重新加载

ios - 使用 Swift 在 Facebook 登录后加载另一个 ViewController

ios - Watchkit 和 Realm 0.92.3

android - 如何使用现有的 Realm 作为资源

ios - Xamarin:未在设备上调用 RowSelected,在模拟器中正常

swift - 在 Swift 中将 TapGestureRecognizer 添加到 UILabel

Swift 如何在不上传新图像的情况下更改 UISearchBar 清除按钮颜色

ios - 在动态框架中使用 Realm?