学校のプロジェクト用に作成しているiOSアプリケーションで、NSMutableArrayに保存されているデータを保存するのに問題があります。配列はアプリデリゲートファイルに作成され、次にその配列のデリゲートが他のさまざまなViewControllerファイルに作成されます。配列に格納されるデータは、プロパティとしてNSStringsとNSNumbersで構成されるカスタムクラスで構成されます。
私はこのサイトで約1週間、多くの例を読んでフォローしてきましたが、私は一生それを理解することができません。コアデータも調べましたが、完全にやり直さないと実装方法がわからず、残念ながら時間に追われています。
私が試したこと:
WillTerminateメソッドでのアーカイブ。(activityArrayは私の配列です)
- (void)applicationWillTerminate:(UIApplication *)application {
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString* arrayFile = [documentsPath stringByAppendingPathComponent:@"arrayFile"];
[NSKeyedArchiver archiveRootObject:activityArray toFile:arrayFile];
[activityArray release];
次に、AppDelegateファイルのdidFinishLaunchingWithOptionsメソッドでアーカイブを解除します
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *arrayFile = [documentsPath stringByAppendingPathComponent:@"arrayFile"];
if ([fileManager fileExistsAtPath:arrayFile]) {
NSLog(@"yes");
activityArray = [NSMutableArray arrayWithContentsOfFile:arrayFile];
} else {
activityArray = [[NSMutableArray alloc] init];
}
他の質問の提案に従って、私は自分が持っているカスタムクラスで次のことを行いました(このクラスには2つのNSString、activityNameとactivityDescriptionがあります)。
- initWithCoder:(NSCoder *)aCoder {
self = [super init];
activityName = [[aCoder decodeObjectForKey:@"activityName"] retain];
activityDescription = [[aCoder decodeObjectForKey:@"activityDescription"] retain];
return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:activityName forKey:@"activityName"];
[aCoder encodeObject:activityDescription forKey:@"activityDescription"];
}
しかし、これはどれも私にはうまくいかないようです。どんな助けでもありがたいです。これはかなり簡単なことだと思いますが、私はそれを理解できないようです。