2014-09-17 3 views
0

Моя модель:RLMArray - получить массив из объекта

Conv.h

#import <Realm/Realm.h> 
#import "ConvText.h" 

@interface Conv : RLMObject 

@property NSInteger c_id; 
@property RLMArray<ConvText> *cts; 

@end 

ConvText.h

#import <Realm/Realm.h> 

@interface ConvText : RLMObject 

@property NSInteger ct_id; 
@property NSInteger time; 

@end 

RLM_ARRAY_TYPE(ConvText) 

Когда я пытаюсь извлечь ConvTexts от Conv:

Conv *c = [Conv objectsWhere:@"c_id = %@",@(1)]; 
ConvText *ct = [c.cts arraySortedByProperty:@"time" ascending:NO][0]; <-- 

Я получаю сообщение: 'RLMException', причина: 'Этот метод может быть вызван только в тех случаях, RLMArray извлекаемых из RLMRealm'

Я также попробовать так:

RLMArray *cts = c.cts; 
ConvText *ct = [cts arraySortedByProperty:@"time" ascending:NO][0]; 

ответ

6

Вы получаете эту ошибку, потому что за кулисами Результаты запроса и отношения - это два разных типа объектов, даже если они отображаются через один класс (RLMArray). В этом случае вы вызываете метод Query (arraySortedByProperty) в отношении отношения, и этот метод доступен только в результатах запроса, хотя мы также должны рассмотреть возможность добавления его в отношения.

Мы планируем исправить эту проблему с помощью

  1. результатов, разделяющех запросов и отношений в два отдельных классах
  2. ПОЗВОЛЯЮЩ (большинство) метода запроса должны быть вызвана в отношениях.

В то же время, вы, к сожалению, до глубокой скопируйте RLMArray в NSArray и сортировать его :(Мы знаем, что это отстой, но мы только что получили поддержку пересортировывать Отношения на уровне C++, поэтому мы будем иметь что зафиксировано в следующем выпуске (0,86)

Наше сообщение об ошибке должно быть много более четко, а также - мы исправим ее как можно скорее

+2

спасибо за большое объяснение PS тем не менее, область проста в использовании и.. но мощная БД. С уважением! –

+1

Просто попробовал называть «objectsWhere» на отношениях и закончил с тем же исключением. Было бы неплохо, если бы это работало. – zvonicek

+0

Я испытывая ту же проблему, что и zvonicek, только я пытаюсь использовать ObjectWithPredicate: – user3344977

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