领域:按子对象中的属性排序

cod*_*man 12 realm ios swift

我的Show对象如下所示:

class Show: RLMObject {
    dynamic var venue: Venue?
}
Run Code Online (Sandbox Code Playgroud)

和我的Venue对象:

class Venue: RLMObject {
    dynamic var title = ""
}
Run Code Online (Sandbox Code Playgroud)

我需要能够通过Venue对象的标题对Show对象进行排序.我尝试了以下但出现了错误:

allShowsByLocation = Show.allObjects().sortedResultsUsingProperty("venue.title", ascending: true)
Run Code Online (Sandbox Code Playgroud)

错误是:无效的排序列',原因:'找不到列'(null)'.

jps*_*sim 9

Realm尚不支持RLMResults按子属性排序.作为解决方法,您可以查询Venues并返回每个索引的链接对象:

allVenues = Venue.allObjects().sortedResultsUsingProperty("title", ascending: true)

func showAtIndex(index: UInt) -> Show {
  return (allVenues[index] as Venue).linkingObjectsOfClass("Show", forProperty: "venue")
}
Run Code Online (Sandbox Code Playgroud)

或者您可以简单地venueTitleShow模型添加属性,然后允许您的查询工作:

allShowsByLocation = Show.allObjects().sortedResultsUsingProperty("venueTitle", ascending: true)
Run Code Online (Sandbox Code Playgroud)

您还可以订阅GitHub问题#1199,以了解我们在支持子属性排序方面的进展.