如何对领域进行排序基于布尔属性的结果

时间:2018-05-30 10:51:20

标签: swift realm resultset realm-mobile-platform

我尝试过使用自定义模式进行排序。但是它返回一个数组。这没用。 因为我需要返回类型为结果。

Ex:请考虑以下事项:

var encoding = Encoding.GetEncoding(response.CharacterSet, new EncoderExceptionFallback(), new DecoderExceptionFallback());

// This will throw if the file is wrongly encoded
encoding.GetCharCount(bytes);

byte[] preamble = encoding.GetPreamble();

bool hasPreamble = bytes.Take(preamble.Length).SequenceEqual(preamble);

if (hasPreamble)
{
    File.WriteAllBytes("WithPreambleFile.txt", bytes);

    using (var fs = File.OpenWrite("WithoutPreamble.txt"))
    {
        fs.Write(bytes, preamble.Length, bytes.Length - preamble.Length);
    }
}
else
{
    File.WriteAllBytes("WithoutPreambleFile.txt", bytes);

    using (var fs = File.OpenWrite("WithPreamble.txt"))
    {
        fs.Write(preamble, 0, preamble.Length);
        fs.Write(bytes, 0, bytes.Length);
    }
}

现在我如何对上面的结果进行排序

我确实尝试了

class A:Object {
    dynamic var name: String = "abc"
    dynamic var isStrong: Bool = false
}

这会产生一个排序数组。但我需要一个realmResults对象。 任何形式的帮助都是精心准备的。 谢谢。 :)

1 个答案:

答案 0 :(得分:2)

您可以使用bool属性对Results实例进行排序,但无法实现返回Results的自定义排序函数。 Results仅支持基于类的实例属性进行排序,或者如果将它们添加到SortDescriptor,则基于多个实例属性。

即使您无法定义自定义排序逻辑,您的当前逻辑似乎只基于单个bool属性实现降序排序,因此您可以使用内置sorted(byKeyPath:,ascending:)内置的Realm来实现相同的结果方法

realm.objects(A.self).sorted(byKeyPath: "isStrong",ascending: false)