*强调文本*所以我使用restkit来拉回一堆对象以在UI Collection视图中显示。我得到了我的初始映射结果,它是MyCell Objects的NSArray。
我调用给定的成功块并将mappingResult.array返回给我的getCellObjects服务方法的调用者。
现在在调用viewController中我只想设置我的本地NSArray属性,将我的UICollectionView驱动到我从restkit的映射中去的那个。
[[MyService sharedClient] getCellObjectsWithSuccess:^(RKObjectRequestOperation *op, RKMappingResult mappingResult){
self.myCells = [[NSMutableArray alloc] initWithArray:mappingResult.array];
}
在示例中,self.MyCells是NSMutableArray,mappingResult.array是NSArray。
我是Objective-c的新手。有没有办法将结果数组从restKit设置为我的本地NSArray属性?
目标是一旦完成对getCellObjects的调用,我就不再需要mappingResult.array了,所以它应该被丢弃,它的内容应该转移到self.MyCells。
我在调用initWithArray时遇到的错误是终止应用程序,因为未捕获的异常'NSInvalidArgumentException',原因' - [__ NSArrayM数组]:无法识别的选择器发送到实例[某些内存地址]
答案 0 :(得分:3)
mappingResult 已经是一个数组了,为什么你需要调用(假设,因为 NSArray 类不存在)数组< / em>方法?
这没关系:
self.MyCells = [[NSMutableArray alloc] initWithArray:mappingResult];
但是我记得还有一个 mutableCopy 方法,适用于需要获取对象的可变副本的时候(结果相同):
self.MyCells= [mappingResult mutableCopy];
我还想记住,按照惯例,所有ivars都需要以非大写字母开头,所以我建议将 MyCells 更改为 myCells 。
答案 1 :(得分:1)
mappingResult
已经是一个数组,因此您不需要mappingResult.array
在NSArray对象上调用mutableCopy
方法以获取该数组的可变副本
self.MyCells= [mappingResult mutableCopy];
此外,MyCells
是一个ivar,因此根据变量命名约定,我建议您将其命名为myCells
。
在这里你去:
self.myCells= [mappingResult mutableCopy];