0

*強調されたテキスト*だから私はrestkitを使ってたくさんのオブジェクトをプルバックしてUIコレクションビューに表示しています。MyCell オブジェクトの NSArray である最初のマッピング結果を取得します。

指定された成功ブロックを呼び出し、mappingResult.array を getCellObjects サービス メソッドの呼び出し元に返します。

呼び出し元のviewControllerで、UICollectionViewを駆動するローカルのNSArrayプロパティを、レストキットのマッピングから取得したものに設定したいだけです。

[[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', 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];

また、慣例により、すべての ivar は大文字以外で始める必要があることを覚えておきたいので、MyCellsmyCellsに変更することをお勧めします。

于 2013-05-25T00:02:57.393 に答える
1

mappingResultはすでに配列なので、mappingResult.array は必要ありません

mutableCopyNSArray オブジェクトのメソッドを呼び出して、その配列の変更可能なコピーを取得します

self.MyCells= [mappingResult mutableCopy];

また、MyCellsivar であるため、変数の命名規則に従って、名前を付けることをお勧めしますmyCells

どうぞ: self.myCells= [mappingResult mutableCopy];

于 2013-05-25T05:32:53.757 に答える