如何在objective-c中将一个数组分配给另一个数组?

时间:2013-05-24 23:42:33

标签: objective-c nsarray restkit-0.20

*强调文本*所以我使用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数组]:无法识别的选择器发送到实例[某些内存地址]

2 个答案:

答案 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];