所以我在我的项目中使用了一个Realm,我有一个对象,' Pedido' (订购西班牙语)有很多' V3Producto'对象,如下:
@interface V3Producto : RLMObject
@property NSString *codeProd; // Este es el código de barras!
@property NSString *codigo;
@property NSNumber<RLMDouble> *descuento;
@property NSString *detailProd;
@property NSInteger idid;
@property NSInteger idCompania;
@property NSNumber<RLMDouble> *priceProd;
@property NSInteger stock;
@property int cantidadComprada;
@property int cantidad; // cantidad de stock
&#39; Pedidos&#39;的代码(订单)
@interface Pedido:RLMObject
@property NSNumber<RLMDouble> *idUbicacion;
@property NSString *fechaPedido;
@property NSString *sucursal;
@property NSNumber<RLMDouble> *filterId;
@property RLMArray<V3Producto*> *productos;
当我运行应用时,一旦加载我就会收到错误:&#39; RLMException&#39;,原因:&#39;属性&#39; productos&#39;需要一个定义包含类型的协议 - 例如:RLMArray&#39;这很奇怪,因为在添加RLMArray之前似乎工作得很好!任何V3Producto似乎都是完美无缺的RLMObject! 有什么想法吗?
修改 我尝试过重命名产品&#39;
,以及其他具有相同名称的线程建议但其他内容并未修复。答案 0 :(得分:1)
这是因为在声明RLMArray属性时,必须根据Realm Docs
将类型标记为符合协议的名称与其应包含的对象相同声明RLMArray的Syntex是: -
RLM_ARRAY_TYPE(ObjectType)
@property RLMArray<ObjectType *><ObjectType> *arrayOfObjectTypes;
您的代码应该是: -
RLM_ARRAY_TYPE(V3Producto)
@interface Pedido : RLMObject
@property NSNumber <RLMDouble> *idUbicacion;
@property NSString *fechaPedido;
@property NSString *sucursal;
@property NSNumber <RLMDouble> *filterId;
@property RLMArray <V3Producto*> <V3Producto> *productos;
@end
答案 1 :(得分:0)
声明RLMArray的正确方法如下:
RLM_ARRAY_TYPE(V3Producto)
@interface Pedido : RLMObject
@property NSNumber<RLMDouble> *idUbicacion;
...
@property RLMArray<V3Producto*><V3Producto> *productosPedido;
注意我必须声明我想要用作带有MACRO的数组的类型(在第一行),并且数组的声明略有不同(你必须设置类型加上你自己的宏)。我宣布了。)