领域 - 返回数组列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了领域 - 返回数组列表相关的知识,希望对你有一定的参考价值。

我有一个名为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)。

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

答案

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)
}

以上是关于领域 - 返回数组列表的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段内的列表视图打开链接网址?

为啥此代码片段返回意外结果?

如何使列表视图出现在片段中?

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试

替换从 VAST 代码返回的多个 HLS VOD 片段

javascript常用代码片段