领域 - 返回数组列表

问题描述 投票:0回答:1

我有一个名为mood的领域对象,我试图将字段活动中的所有值作为[String]列表返回,其中mood = great

我的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;
    }
)

我想返回一个像这样的列表

[“down”]因为那是心情=伟大的活动等

我试过了:

func getGreatMoodActivity() -> [String]{
    let greaMoodActivity = Set(realm.objects(Mood.self).filter("mood = 'Great'") as! [String])
    return getGreatMoodActivity()
}

但是这个错误会崩溃

无法将'RealmSwift.Results'(0x10f520810)类型的值转换为'NSArray'(0x10ce35008)。

有没有办法来解决这个问题?

ios swift realm swift4
1个回答
0
投票

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.