私は現在、initWithDecoderを使用して無線で送信されたデータをデコードしています。私が気づいたことの1つは、呼び出されたときにスコープ内の変数を表示できないため、意図したとおりに動作しないことです。これは、私が行ったことの例です。
まず、すべてのデータをエンコードします。
-(void) encodeWithCoder: (NSCoder *) encoder
{
for(BaseGroup *attackCard in myArray)
{
[encoder encodeObject: attackCard];
}
}
同じクラス内で、私が持っているアイテムの数をメモしておきます。
self.numItems = [self.myArray count];
そして、initWithCoder内で、エンコードされたNSDataを次のように反復およびデコードすることを期待しています。
-(id) initWithCoder: (NSCoder *) decoder
{
for(int i =0; i < self.numItems; i++)
{
[self.myArray addObject:[decoder decodeObject]];
}
return self;
}
問題は、initWithCoderが変数numItemsのスコープ外であるため、まったく反復されないことです。これを回避する方法はありますか?