gpt4 book ai didi

ios - Swift 3 需要有关 Realm 查询的帮助

转载 作者:行者123 更新时间:2023-11-28 06:24:52 25 4
gpt4 key购买 nike

我有两个模型类

class EntryModel: Object {
dynamic var id: Int = 0
dynamic var type: String = ""
dynamic var tap: Int = 0
dynamic var title: String = ""
dynamic var notes: String = ""
dynamic var startTime: Date? = nil
dynamic var endTime: Date? = nil
dynamic var amount1: Int = 0
dynamic var amount2: Int = 0
dynamic var meal: String = ""
dynamic var foodDetails: String = ""
dynamic var isAlarm: Bool = false
dynamic var timeOfAlarm: Date? = nil
//dynamic var lastFeedTime: Date? = nil // optionals supported

override static func primaryKey() -> String? {
return "id"
}
}

class EntryModelList: Object {
dynamic var id: Int = 0
dynamic var babyId: Int = 0
dynamic var date: Date? = nil
var entryModel = List<EntryModel>()
//dynamic var lastFeedTime: Date? = nil // optionals supported

override static func primaryKey() -> String? {
return "id"
}
}

我是新手,所以不是很了解。我想要一个查询,它将通过使用 EntryModelList 的 babyId 和 EntryModel 的类型进行过滤来返回我。 which 将只匹配我想要的这个列表。

我试过

 let predicate = NSPredicate(format: "babyId == \(babyId) AND ANY entryModel.type IN %@", filterArray)
let entryModelList = try! Realm().objects(EntryModelList.self).filter(predicate).sorted(byKeyPath: "date", ascending: false)

谓词输出:

babyId == 1 AND ANY entryModelList.type IN {"breast", "bottle"}

输出:

Results<EntryModelList> (
[0] EntryModelList {
id = 2;
babyId = 1;
date = 2017-02-16 18:00:00 +0000;
entryModelList = RLMArray <0x6100000ff480> (
[0] EntryModel {
id = 8;
type = diaper;
tap = 1;
title = ;
notes = ;
startTime = 2017-02-17 11:26:36 +0000;
endTime = (null);
amount1 = 0;
amount2 = 0;
meal = ;
foodDetails = ;
isAlarm = 0;
timeOfAlarm = (null);
},
[1] EntryModel {
id = 10;
type = bottle;
tap = 1;
title = ;
notes = Fgdg;
startTime = 2017-02-16 23:44:22 +0000;
endTime = (null);
amount1 = 15;
amount2 = 0;
meal = ;
foodDetails = ;
isAlarm = 0;
timeOfAlarm = (null);
}
);
},
[1] EntryModelList {
id = 1;
babyId = 1;
date = 2017-02-14 18:00:00 +0000;
entryModelList = RLMArray <0x6100000fd680> (
[0] EntryModel {
id = 1;
type = breast;
tap = 0;
title = ;
notes = ;'l'k,;
startTime = 2017-02-14 23:15:49 +0000;
endTime = (null);
amount1 = 100;
amount2 = 0;
meal = ;
foodDetails = ;
isAlarm = 0;
timeOfAlarm = (null);
},
[1] EntryModel {
id = 4;
type = bottle;
tap = 0;
title = ;
notes = Jhkhjkhjk;
startTime = 2017-02-15 01:17:47 +0000;
endTime = (null);
amount1 = 100;
amount2 = 0;
meal = ;
foodDetails = ;
isAlarm = 0;
timeOfAlarm = (null);
},
[2] EntryModel {
id = 7;
type = breast;
tap = 0;
title = ;
notes = ;
startTime = 2017-02-15 11:43:08 +0000;
endTime = (null);
amount1 = 100;
amount2 = 0;
meal = ;
foodDetails = ;
isAlarm = 0;
timeOfAlarm = (null);
}
);
}
)

但这不是我想要的。我想知道如何只获取那些 EntryModel.type 是“breast”或“bottle”类型的数据列表。

谢谢。

最佳答案

Results.filter(_:) 只允许过滤结果集中包含给定类型的哪些对象。它不支持过滤哪些对象包含在这些对象的属性值中。

要完成您需要在您正在使用的对象的每个 entryModelList 属性上使用 filter(_:)仅包含您感兴趣的内容。

关于ios - Swift 3 需要有关 Realm 查询的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251124/

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