1
我有一個我的類實例,它基本上是來自我自己類的另一個對象的可變數組。我需要這個存儲持久性數據,但我有麻煩,我使用方法類數據類型的持久性數據
-(void)archiveFavorites {
Singleton *singleton = [Singleton sharedSingleton];
NSLog(@"archiving");
GameDatabase *favoritesToArchive = singleton.favorites;
[NSKeyedArchiver archiveRootObject:favoritesToArchive toFile:[self archivePath]];
}
-(NSString *)archivePath {
NSString *docDir =
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
return [docDir stringByAppendingPathComponent: @"Favorites.dat"];
}
在我的視圖控制器試圖存檔。然後我打電話
[viewController archiveFavorites];
在我的應用程序委託「應用的位置信息並輸入背景」
基本上我想保存我自己的類(GameDatabase)的實例在存檔。當檔案我拋出的異常:
編輯:好了,所以繼承人什麼我想在我的兩個類,現在實施: GameDatabase.m
- (void)encodeWithCoder:(NSCoder *)encoder{
[encoder encodeObject:games forKey:@"Games"];
}
- (id)initWithCoder:(NSCoder *)decoder{
if(self = [super init])
{
games = [decoder decodeObjectForKey:@"Games"];
}
return self;
}
GameRecord.m
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.name = [decoder decodeObjectForKey:@"Name"];
self.gameRules = [decoder decodeObjectForKey:@"GameRules"];
self.players = [decoder decodeIntForKey:@"Players"];
self.gameType = [decoder decodeIntForKey:@"GameType"];
self.drinkType = [decoder decodeIntForKey:@"DrinkType"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.name forKey:@"Name"];
[encoder encodeObject:self.gameRules forKey:@"GameRules"];
[encoder encodeInt:self.players forKey:@"Players"];
[encoder encodeInt:self.gameType forKey:@"GameType"];
[encoder encodeInt:self.drinkType forKey:@"DrinkType"];
}
我需要將它添加到協議中還是隻實現這兩個類? –
這兩種方法是協議。除非你問另外一個問題? –
哇,我所做的只是添加這兩種方法,它似乎工作,但我沒有把任何代碼放進去。那是對的嗎? –