Свифт 4 царства фильтр дочерних объектов в зависимости от имени родителей - PullRequest
0 голосов
/ 10 июня 2018

У меня есть два класса, и я использую область для быстрого 4

class ProjectTimeInterval : Object {
@objc dynamic var startDate = Date()
@objc dynamic var endDate : Date?
@objc dynamic var desc : String?
@objc dynamic var running : Bool = false
var parentProject = LinkingObjects(fromType: Project.self, property: "intervals")
}


class Project: Object {
@objc dynamic var name = ""
let intervals = List<ProjectTimeInterval>()
}

, и каким-то образом после настройки области и попытки получить отфильтрованные данные приложение прерывается

var intervals = realm.objects(ProjectTimeInterval.self).filter("parentProject.name MATCHES %@", project.name)

с этой ошибкой

*** Завершение работы приложения из-за необработанного исключения «Недопустимый предикат», причина: «Ключевые пути, которые включают свойство массива, должны использовать агрегатные операции»

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

вам нужно сначала получить parentProject.name, если он не установлен, именно там вы и получаете эту ошибку, попробуйте

if let parentName = parentProject.name {
      var intervals = parentName.intervals.sorted(byKeyPath: "startDate", ascending: true) 
 }

Если это не поможет, тогда покажите свой viewcontroller, где вы выбираете свою область.

0 голосов
/ 10 июня 2018

Хорошо, я сделал это сам.Мне нужно получить интервалы через проект, чтобы

var intervals = project.intervals.sorted(byKeyPath: "startDate", ascending: true)

вот так

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...