Возвращать уникальные / различные значения с помощью запроса Realm

У меня есть модель Message/RLMObject которая имеет свойство / строку NSString *jabberID и я хочу получить каждое unique значение внутри этой строки.

Другими словами, я хочу получить не повторяющиеся значения jabberID из моей модели Message . Может ли кто-нибудь помочь понять это?

То, как я делаю это с coredata, – это использование функции returnsDistinctResults в NSFetchRequest .

Подход к функциональному программированию, так как у Swift есть это, и Realm ленивые нагрузки; Не так просто / доступно решение в Objective-C, но для Swift по крайней мере: Swift

 let distinctTypes = reduce(Realm().objects(User), []) { $0 + (!contains($0, $1.type) ? [$1.type] : [] ) } 

ОБНОВЛЕНО:

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

 let distinctTypes = Array(Set(Realm().objects(User).valueForKey("type") as! [String])) 

Я обнаружил, что Realm не поддерживает полностью различные запросы. Хорошей новостью является то, что я нашел обходной путь для этого, по этой проблеме github .

Objective-C

 RLMResults *messages = [Message allObjects]; NSMutableArray *uniqueIDs = [[NSMutableArray alloc] init]; NSMutableArray *uniqueMessages = [[NSMutableArray alloc] init]; for (Message *msg in messages) { NSString *jabberID = msg.jabberID; Message *uniqueMSG = (Message *)msg; if (![uniqueIDs containsObject:jabberID]) { [uniqueMessages addObject:uniqueMSG]; [uniqueIDs addObject:jabberID]; } } 

Swift 3.0

 let realm = try! Realm() let distinctIDs = Set(realm.objects(Message.self).value(forKey: "jabberID") as! [String]) var distinctMessages = [Message]() for jabberID in distinctIDs { if let message = realm.objects(Message.self).filter("jabberID = '\(jabberID)'").first { distinctMessages.append(message) } } 
Interesting Posts

Могу ли я предоставить свои собственные объявления и заработать деньги в приложении iOS?

Утечка памяти UIWebView

iOS – Определить, что UIViewController ранее было показано в UINavigationController

откройте приложение iphone из ссылки в веб-приложении в сафари

Работа с другим разработчиком в том же проекте xcode, проблема с профилированием

Вызов возврата родительской функции из обработчика завершения

CATransform3DRotate с параметром m34 должен знать угол, соответствующий определенной высоте

GData не компилируется с Apple LLVM 4.1

xcode .pch, исключить из одного файла

IAP – может получать бесплатные продукты подписки, но не оплачиваемые продукты

когда мне нужно использовать копию?

Swift: Как получить строку перед определенным символом?

NSDateFormatter не работает должным образом при преобразовании из буддийского календаря в григорианские форматы дат календаря

Предупреждения Xcode UITest push уведомления не могут нажать «Разрешить»,

Apple Instruments: Откуда берутся элементы <non-object>?

Давайте будем гением компьютера.