我有一个名为心情的 Realm 对象,我试图将字段事件中的所有值作为 [String] 列表返回,其中心情 = 很棒
我的 Realm 对象看起来像:
Results<Mood> <0x7fce164851a0> (
[0] Mood {
mood = Great;
comment = test;
activities = Friends;
time = 8:06 PM;
date = 4/10/18;
symptom = down;
},
[1] Mood {
mood = Sad;
comment = ;
activities = Date;
time = 6:22 PM;
date = 4/14/18;
symptom = up;
},
[2] Mood {
mood = Sad;
comment = ;
activities = Date;
time = 7:40 PM;
date = 4/14/18;
symptom = Night;
},
[3] Mood {
mood = Sad;
comment = ;
activities = Date;
time = 7:41 PM;
date = 4/14/18;
symptom = Dry;
},
[4] Mood {
mood = Awful;
comment = this is an example data for the app!;
activities = Date;
time = 2:17 PM;
date = 4/15/18;
symptom = Lost;
}
)
我想返回一个像
这样的列表[“向下”] 因为这就是心情=很棒等的事件
我已经尝试过:
func getGreatMoodActivity() -> [String]{
let greaMoodActivity = Set(realm.objects(Mood.self).filter("mood = 'Great'") as! [String])
return getGreatMoodActivity()
}
但是这个错误导致崩溃
Could not cast value of type 'RealmSwift.Results' (0x10f520810) to 'NSArray' (0x10ce35008).
有办法解决这个问题吗?
最佳答案
filter
操作将保持过滤 Mood
与给定条件匹配的对象,因此其返回值的类型为 Results<Mood>
显然你不能强制转换为 Array<String>
。
看来您实际上是在尝试map
Mood
与您的过滤条件匹配的对象 symptom
属性,其类型为 String
。为了实现您的目标,您需要调用map
过滤 Mood
后对象。
而且,你的返回值完全有缺陷,你想返回变量greatMoodActivity
中存储的数组并且不递归调用您的函数。
func getGreatMoodActivity() -> [String]{
let greatMoodActivity = realm.objects(Mood.self).filter("mood = 'Great'").map({$0.symptom})
return Array(greatMoodActivity)
}
关于ios - Realm - 返回数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49846972/