Я создаю приложение для 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) Можно ли установить отношение одного класса к одному и тому же классу на основе строки (первичный ключ, который здесь является идентификатором)?
Заранее спасибо за помощь, хорошего дня!