0

*强调文本*所以我正在使用 restkit 拉回一堆对象以显示在 UI 集合视图中。我得到了我的初始映射结果,它是一个 MyCell 对象的 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 时遇到的错误是Terminating app due to uncaught exception 'NSInvalidArgumentException', reason'- [__NSArrayM array]: unrecognized selector sent to instance [some memory address]

4

2 回答 2

3

mappingResult已经是一个数组,那为什么还要调用(假设的,因为NSArray类不存在)数组方法呢?

这会很好:

self.MyCells = [[NSMutableArray alloc] initWithArray:mappingResult];

但我记得还有一个mutableCopy方法,适用于需要获取对象的可变副本时(结果相同):

self.MyCells= [mappingResult mutableCopy];

我还想记住,按照惯例,所有 ivars 都需要以非大写字母开头,因此我建议将MyCells更改为myCells

于 2013-05-25T00:02:57.393 回答
1

mappingResult已经是一个数组,所以你不需要 mappingResult.array

在 NSArray 对象上调用mutableCopy方法以获取该数组的可变副本

self.MyCells= [mappingResult mutableCopy];

另外,MyCells是一个 ivar,所以根据变量命名约定,我建议你命名它myCells

干得好: self.myCells= [mappingResult mutableCopy];

于 2013-05-25T05:32:53.757 回答