Intereting Posts
Чтение локализованной строки ионная строка состояния белого цвета – iOS Вход в систему и пароль с помощью NSURLConnection Загрузить файл .ipa с использованием служб bitrise без xcode В чем разница между двумя инициативами строк, приведенными ниже Вывести модель для отображения документа PDF – Swift, IOS Как проверить возникшие в облачном коде ошибки при анализе Эту этикетку или лучшие примеры использования iPhone GUI проблема с пониманием Obj-C MVC: exit and unwindSegue Swift indexpath = необязательный (0) Как сделать автоматическое тестирование для приложения Unity-iOS? В iOS различное местоположение обнаруживается даже в том случае, когда устройство находится в одном положении ios MPMoviePlayerController не может воспроизводить локальные файлы на симуляторе Как заставить UIImageView заполнить UITableViewCell? iOS: странное поведение с UIWebView и Base64-кодированным изображением при создании PDF-файла

Получить верхнюю часть 1 из отдельного атрибута в CoreData

Привет, у меня есть таблица с форматом, показанным ниже.

Я хочу построить представление истории, поэтому мне нужны последние сообщения от разных пользователей, упорядоченных по метке времени!

+---+-------------------+-------------------+---------------+ | | Username | Message | Timestamp | +---+-------------------+-------------------+---------------+ | 1 | John | Hello | 486380161.723 | | 2 | Mark | Spreadsheet | 486380264.723 | | 3 | John | FYI | 486380366.723 | | 4 | John | Bye | 486557497.271 | | 5 | Mark | How are you? | 486557597.274 | | 6 | Mario | What? | 486558597.274 | +---+-------------------+-------------------+---------------+

Это и должен быть мой результат.

+---+-------------------+-------------------+---------------+ | | Username | Message | Timestamp | +---+-------------------+-------------------+---------------+ | 6 | Mario | What? | 486558597.274 | | 5 | Mark | How are you? | 486557597.274 | | 4 | John | Bye | 486557497.271 | +---+-------------------+-------------------+---------------+

На данный момент я получаю все разные username , итерацию каждого из них и запрос сообщений для этого имени пользователя, упорядоченного по метке времени, с limit(1) .

Я не доволен этим решением, чтобы кто-нибудь мог помочь мне лучше?

Благодарю, Mário

Solutions Collecting From Web of "Получить верхнюю часть 1 из отдельного атрибута в CoreData"

Это можно сделать в двух вариантах, с одним предостережением, о котором я расскажу, когда я доберусь до него.

Первая выборка получает имена пользователей и самую последнюю временную метку для каждого:

  let maxTimestampRequest = NSFetchRequest(entityName: "Entity") maxTimestampRequest.resultType = .DictionaryResultType let maxTimestampExpression = NSExpression(format: "max:(timestamp)") let maxTimestampExpressiondescription = NSExpressionDescription() maxTimestampExpressiondescription.name = "maxTimestamp" maxTimestampExpressiondescription.expression = maxTimestampExpression maxTimestampExpressiondescription.expressionResultType = .DoubleAttributeType maxTimestampRequest.propertiesToFetch = ["username", maxTimestampExpressiondescription] maxTimestampRequest.propertiesToGroupBy = ["username"] 

Выполните эту выборку, и вы получите массив словарей. Каждый словарь содержит имя пользователя и самую последнюю временную метку для этого имени пользователя:

 Optional([{ maxTimestamp = "486557497.271"; username = John; }, { maxTimestamp = "486558597.274"; username = Mario; }, { maxTimestamp = "486557597.274"; username = Mark; }]) 

Для получения полной записи требуется вторая выборка. Если результаты предыдущей выборки находятся в массиве, называемом results ,

  var predicates = [NSPredicate]() for maxTimestampInfo in results! { let username = maxTimestampInfo["username"]! let timestamp = maxTimestampInfo["maxTimestamp"]! let partialPredicate = NSPredicate(format: "username=%@ and timestamp=%@", argumentArray:[ username, timestamp ]) predicates.append(partialPredicate) } let completePredicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates) let fetch = NSFetchRequest(entityName: "Entity") fetch.predicate = completePredicate 

Выполните эту выборку, и вы получите полностью управляемые объекты, соответствующие вашим требованиям.

Предостережение заключается в том, что предикат во второй выборке потенциально может быть очень большим, в зависимости от количества пользователей, которые у вас есть.