0

我目前正在使用 initWithDecoder 解码我通过无线发送的数据。我注意到的一件事是,当它被调用时,它看不到范围内的变量,因此不会按照我想要的方式运行,这是我所做的一个示例:

首先我对所有数据进行编码:

-(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 的范围,因此根本不迭代。有没有解决的办法?

4

1 回答 1

1

为什么不对整个数组进行编码/解码?这会让事情变得更容易......

另外,别忘了打电话[super init...]

-(void) encodeWithCoder: (NSCoder *) encoder 
{
      [encoder encodeObject: myArray];
}


-(id) initWithCoder: (NSCoder *) decoder
{
   if ((self = [super init]))
       self.myArray = [decoder decodeObject];
   return self;
}
于 2012-05-02T16:51:59.357 回答