Запрос базы данных Realm на основе NSString в RLMArray - PullRequest
0 голосов
/ 28 июня 2019

Я создаю приложение для iOS на основе Realm из-за его скорости и эффективности, однако сейчас я сталкиваюсь с препятствием.

У меня есть объект с именем ATRPackage с первичным ключом под названием «идентификатор» (строка в форме идентификатора пакета, например com.myCompany.myApp) и другая переменная RLMArray (называемая «зависимости»), содержащая одну или несколько строк RLMString. Эти строки также являются идентификаторами пакета. Я не могу установить в RLMArray значение ATRPackage (для установки отношений), поскольку пакет может полагаться на другой, отсутствующий в базе данных (в этом случае зависимость не может быть решена).

Сейчас я пытаюсь выполнить запрос к базе данных для получения всех пакетов ATRPackage, которые содержат определенный идентификатор в массиве их зависимостей, однако, независимо от того, что я делаю, я получаю сбой.

Я пытался сделать запрос следующим образом:

RLMResults<ATRPackage *> *packages = [ATRPackage objectsWhere:@"%@ IN dependencies", identifier];

Но я получаю:

Terminating app due to uncaught exception 'Invalid value', reason: 'Expected object of type (null) for property 'dependencies' on object of type 'ATRPackage', but received: mobilesubstrate'

Я также пытался установить обратную зависимость, как это, но у меня происходит сбой без указания в консоли (ошибка SIGABRT) (возможно, глупая ошибка из-за моего неправильного понимания):

+ (NSDictionary *)linkingObjectsProperties {

return @{
         @"dependencies": [RLMPropertyDescriptor descriptorWithClass:ATRPackage.class propertyName:@"identifier"],
         };

}

Итак, мои вопросы:

1) Почему Realm ожидает значение типа null при запросе с IN на RLMArray? Эта форма запроса не поддерживается

2) Можно ли установить отношение одного класса к одному и тому же классу на основе строки (первичный ключ, который здесь является идентификатором)?

Заранее спасибо за помощь, хорошего дня!

...