2016-12-20 4 views
0

Я пытаюсь создать функцию сортировки, которая будет управлять объектами, доступными через отношения с родительским объектом по атрибуту dateCreated. Надеясь, что результат предоставит мне набор объектов, которые я могу загрузить в таблицу.Сортировка объектов в отношениях по атрибуту?

Я понимаю, что вам нужно использовать функцию сортировки и преобразовать их атрибут NSDate в метку времени, чтобы иметь возможность сравнивать, поскольку они не имеют простых атрибутов даты.

Однако я не уверен, как я хотел бы получить доступ к этим атрибутам для начала. У меня был выстрел в код, основанный на моем чтении, но на его метательные ошибки, и я не могу решить эту проблему.

 if let userExercise = selectedRoutine?.userexercises?.allObjects[indexPath.row] { 

     let dateSortedUserExercises = userExercise.sorted (by: { (left, right) -> Bool in 
      userExercise.dateCreated!.timeIntervalSince1970 > userExercise.dateCreated!.timeIntervalSince1970 
     }) 
     print("SORTED EXERCISES \(dateSortedUserExercises)") 

Im получение:

Значение типа 'Любой' имеет ни один член 'сортировали'

тогда, если я сделать это (userExercise as AnyObject) в соответствии с рекомендациями быстры, я получаю

Значение типа 'AnyObject' не имеет элементарных данных '

Я верю, что они либо совершили неправильный маршрут здесь, либо им удалось получить доступ к неправильным вещам неправильным образом? Спасибо за любую помощь здесь! обновление

: добавлен скриншот нижеперечисленным

code image

+0

'userExercise' (который должен называться' userExercises', btw, потому что это набор пользовательских упражнений, а не только один) должен быть передан последовательности (такой как массив), чтобы иметь сортировку 'метод. – Alexander

+0

Я вижу, у вас есть больше информации об этом, так как я ранее не использовал этот метод – jwarris91

+0

Из любопытства: Почему вы создали новую учетную запись? – shallowThought

ответ

0

Вы должны ссылаться на два объекта в замыкании при сортировке.

let dateSortedUserExercises = userExercise.sorted { left, right in 
     left.dateCreated!.timeIntervalSince1970 > right.dateCreated!.timeIntervalSince1970 
    } 

или в более краткой форме:

let dateSortedUserExercises = userExercise.sorted { $0.0.dateCreated!.timeIntervalSince1970 > $0.1.dateCreated!.timeIntervalSince1970 } 

где $ 0.0 находится с левой стороны и $ 0.1 правая сторона.

+0

Благодарим за это, im, все еще получая аналогичную ошибку «Значение типа« NSManagedObject »не имеет сортировки участников» – jwarris91

+0

перейдите в ваш .xcdatamodelId файл и в инспектор модели объекта присваивает классу имя вашего класса. Это должно ассоциировать эту модель с этим классом – JustinM

+0

, которая не разрешает проблему, ее более сложную ситуацию в контексте кода, по сути, я беру выбранную Routine и перехожу через ее связь с объектами (упражнения для сортировки), поэтому пользовательские упражнения - это упражнение объекты, но не кажущиеся прямолинейными, как вы ожидали бы. Они уже установлены как UserExercise в файле данных, но пользовательский интерфейс пользователя как! UserExercse (который должен быть одним и тем же) выдает намного больше ошибок, плохо обновляет OP, чтобы показать – jwarris91

Смежные вопросы