0
我有两个模型类斯威夫特3需要帮助的境界查询
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类型进行过滤来返回给我。这将只匹配我想要的这个列表。
我试图与
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为“乳房”或“瓶子”类型的那些数据列表。
感谢。
你能提供一些示例数据显示你希望你的查询匹配vs它实际匹配什么?从描述中很难理解你希望查询做什么不同。 – bdash
@bdash我已更新我的问题,请让我知道您可以理解我的问题。我的英文不是很好。如果你能给我一个解决方案,我会对你谦虚。谢谢 – Jihan
你的意图是最终得到一个'Results',其中每个包含'EntryModelList'的'entryModelList'属性被过滤,因此它只包含具有适当'type'属性的对象? –
bdash