所以我在我的项目中使用了一个领域,我有一个对象“ 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


以及“ Pedidos”的代码(订单)

@interface Pedido:RLMObject

@property NSNumber<RLMDouble>   *idUbicacion;
@property NSString              *fechaPedido;
@property NSString              *sucursal;
@property NSNumber<RLMDouble>   *filterId;
@property RLMArray<V3Producto*>       *productos;


当我运行该应用程序时,加载该应用程序后,我立即收到错误消息:“ RLMException”,原因:“属性'productos'需要定义所包含类型的协议-例如:RLMArray',这很奇怪,因为在添加RLMArray之前工作就好了!任何V3Producto似乎都是完美且有效的RLMObject!
有任何想法吗?

编辑:
我尝试过将“ productos”重命名为其他名称相同的其他线程,但这并不能解决问题。

最佳答案

这是因为在声明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

10-08 18:23