解码我的NSData

时间:2012-05-02 16:40:22

标签: iphone objective-c nsdata decode encode

我正在使用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的范围,因此根本不进行迭代。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

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

此外,请不要忘记致电[super init...]

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


-(id) initWithCoder: (NSCoder *) decoder
{
   if ((self = [super init]))
       self.myArray = [decoder decodeObject];
   return self;
}