我的模特:
转化率
#import <Realm/Realm.h>
#import "ConvText.h"
@interface Conv : RLMObject
@property NSInteger c_id;
@property RLMArray<ConvText> *cts;
@end
转换文本
#import <Realm/Realm.h>
@interface ConvText : RLMObject
@property NSInteger ct_id;
@property NSInteger time;
@end
RLM_ARRAY_TYPE(ConvText)
当我尝试从Conv中提取ConvText时:
Conv *c = [Conv objectsWhere:@"c_id = %@",@(1)];
ConvText *ct = [c.cts arraySortedByProperty:@"time" ascending:NO][0]; <--
我收到此消息:“ RLMException”,原因:“只能在从RLMRealm检索的RLMArray实例中调用此方法”
我也这样尝试:
RLMArray *cts = c.cts;
ConvText *ct = [cts arraySortedByProperty:@"time" ascending:NO][0];
最佳答案
之所以会出现此错误,是因为在后台查询结果和关系是两种不同类型的实体,即使它们是通过同一类(RLMArray)公开的。在这种情况下,您要在Relationship上调用Query方法(arraySortedByProperty),该方法仅在Query结果上可用,尽管我们当然也应该考虑将其添加到Relationships中!
我们计划通过
将查询结果和关系分为两个单独的类
允许在“关系”上调用(大多数)查询方法。
同时,很遗憾,您必须将RLMArray复制到NSArray并进行排序:(我们知道它很烂,但是我们只是获得了在C ++级别对关系进行重新排序的支持,因此我们将在下一版本中修复该问题。 (0.86)
我们的错误消息也应该更加明确-我们将尽快对其进行修复。