0

可変配列プロパティ「favoritesArray」と NSString プロパティ「name」を持つオブジェクト「School」があります。

「HomeViewController」と「FavoritesTableViewController」の2つのビューコントローラーがあります。

私の HomeViewController では、ボタンがタップされると、このメソッドが呼び出されます。

self.school=[[School alloc]init]; 
[self.school.favoritesArray addObject:self.school.name];
 NSData *schoolData=[NSKeyedArchiver archivedDataWithRootObject:self.school];
[[NSUserDefaults standardUserDefaults] setObject:schoolData forKey:@"schoolData"];

次に、「FavoritesTableViewController」で、以前にアーカイブした「学校」オブジェクトのアーカイブを解除して、「favoritesArray」にアクセスできるようにします。

「FavoritesTableViewController」でボタンがタップされると、このメソッドが呼び出されます。

NSData *dataRetrieved=[[NSUserDefaults standardUserDefaults] objectForKey:@"schoolData"];
School *schoolTwo=[NSKeyedUnarchiver unarchiveObjectWithData:dataRetrieved];
NSLog(@"%lu", (unsigned long)schoolTwo.favoritesArray.count);

ただし、「HomeViewController」にアーカイブされたオブジェクトをアーカイブ解除しなかったことを意味する 0 をログに記録します。

別のView Controllerにアーカイブされたオブジェクトをアンアーカイブするにはどうすればよいですか?

4

3 に答える 3

0

あなたがしたことは何でも正しかったのですが、変更可能な配列を初期化するのを忘れていたと思います。

self.school=[[School alloc]init];
self.school.favoritesArray = [NSMutableArray array];
[self.school.favoritesArray addObject:self.school.name];
于 2014-03-22T19:36:23.593 に答える