无法在没有初始化的情况下使用 RLMArray?
Using RLMArray without initialisation not possible?
我想用一种方法收集一些数据。 RLMArray
然后将用作一对多关系,例如menu.dishes
+ (RLMArray<Dish> *)parseDishesFromDictionary:(NSDictionary *)resultDictionary {
NSArray *menuDishes = (NSArray*)resultDictionary[@"menuDishes"];
RLMArray<Dish> *dishes;
for (NSDictionary *menuDishDictionary in menuDishes) {
Dish *dish = [self getDishGetDishfromDictionary:menuDishDictionary];
[dishes addObject:dish];
}
return dishes;
}
问题:盘子数组总是 nil。
这真的不可能吗,就像 问题的答案所暗示的那样?
RLMArray
是一种容器类型,主要用于存储 Realm 对象上的多对多关系,在将其分配给对象之前,您不会获得任何集合优化,这这就是为什么 Realm 不允许直接初始化 RLMArray
(+new
和 -init
在 docs 中被列为不可用)。
所以你的 parseDishesFromDictionary
方法应该 return 一个 NSArray<Dish *>
然后你可以使用 -addObjects
添加到你的 RLMArray
属性。
我想用一种方法收集一些数据。 RLMArray
然后将用作一对多关系,例如menu.dishes
+ (RLMArray<Dish> *)parseDishesFromDictionary:(NSDictionary *)resultDictionary {
NSArray *menuDishes = (NSArray*)resultDictionary[@"menuDishes"];
RLMArray<Dish> *dishes;
for (NSDictionary *menuDishDictionary in menuDishes) {
Dish *dish = [self getDishGetDishfromDictionary:menuDishDictionary];
[dishes addObject:dish];
}
return dishes;
}
问题:盘子数组总是 nil。
这真的不可能吗,就像
RLMArray
是一种容器类型,主要用于存储 Realm 对象上的多对多关系,在将其分配给对象之前,您不会获得任何集合优化,这这就是为什么 Realm 不允许直接初始化 RLMArray
(+new
和 -init
在 docs 中被列为不可用)。
所以你的 parseDishesFromDictionary
方法应该 return 一个 NSArray<Dish *>
然后你可以使用 -addObjects
添加到你的 RLMArray
属性。