【问题标题】:Realm - return array list领域 - 返回数组列表
【发布时间】:2018-04-15 21:29:19
【问题描述】:

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

我想返回一个类似

的列表

[“向下”] 因为那是心情=很棒等的活动

我试过了:

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】:

    filter 操作将继续过滤符合您给定条件的Mood 对象,因此其返回值将是Results&lt;Mood&gt; 类型,您显然无法强制转换为Array&lt;String&gt;

    看来您实际上是在尝试map Mood 对象匹配您的过滤条件到它们的symptom 属性,该属性是String 类型。为了实现您的目标,您需要在过滤完Mood 对象后调用map

    此外,您的返回值完全有缺陷,您希望返回存储在变量greatMoodActivity 中的数组而不是递归调用您的函数。

    func getGreatMoodActivity() -> [String]{
        let greatMoodActivity = realm.objects(Mood.self).filter("mood = 'Great'").map({$0.symptom})
        return Array(greatMoodActivity)
    }
    

    【讨论】:

    • 谢谢,但我收到此错误无法将“LazyMapCollection, String>”类型的返回表达式转换为“[String]”类型的返回表达式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多