0

問題が発生しました。アプリを起動するたびにクラッシュします。これが私のコードです。デバッガーは言う:[list count]アプリをクラッシュさせます。何も思いつきません。NSLog(@"%@", self.list);予想通り1つのアイテムをくれます...

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
  data = [[NSData alloc] initWithContentsOfFile:filePath];
  unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];

  NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"];
  [unarchiver finishDecoding];
  [unarchiver release];
  [data release];

}

  self.list = array;
  NSLog(@"%@", self.list);
  NSLog(@"count %i", [list count]);

開かれたアーカイブは次のように作成されました。

Adding *adding = [[Adding alloc] init];
adding.nummer = 1;
adding.stadt = stadt.text;


NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]
                             initForWritingWithMutableData:data];
[archiver encodeObject:adding forKey:@"TOWN"];
[archiver finishEncoding];
[data writeToFile:[self dataFilePath] atomically:YES];

さらなるコードが必要な場合はお知らせください。どんな助けにもとても感謝しています:)

4

1 に答える 1

1

問題は、ここで追加クラスをエンコードしていることだと思います。

[archiver encodeObject:adding forKey:@"TOWN"];

これはまだNSMutableArrayではありませんが、デコードしているときに、ここでNSMutableArrayとして取り戻そうとしています。

NSMutableArray *array = [unarchiver decodeObjectForKey:@"TOWN"];

そして、私はあなたのクラスAddingが配列ではないと推測しています。

于 2010-02-08T17:12:45.980 に答える