Objective-C でカスタム オブジェクトの NSArray をアーカイブするための構文またはサンプル プログラムを教えてもらえますか?
6022 次
2 に答える
12
NSUserDefaultsを確認してください。
アレイをアーカイブするには、次のコードを使用できます。
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:myArray] forKey:@"mySavedArray"];
カスタム オブジェクトを配列にロードするには、次のコードを使用できます。
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *savedArray = [currentDefaults objectForKey:@"mySavedArray"];
if (savedArray != nil)
{
NSArray *oldArray = [NSKeyedUnarchiver unarchiveObjectWithData:savedArray];
if (oldArray != nil) {
customObjectArray = [[NSMutableArray alloc] initWithArray:oldSavedArray];
} else {
customObjectArray = [[NSMutableArray alloc] init];
}
}
nil
アプリがクラッシュする可能性があるため、ユーザーの既定値から返されたデータが ではないことを確認してください。
他に行う必要があるのは、カスタム オブジェクトをNSCoder
プロトコルに準拠させることです。-(void)encodeWithCoder:(NSCoder *)coder
および-(id)initWithCoder:(NSCoder *)coder
メソッドを使用してこれを行うことができます。
于 2010-08-16T13:20:32.320 に答える
2
(NSUserDefaults を使用するのではなく) ファイルに保存する場合は、NSArrays を使用-initWithContentsOfFile:
してロードおよび-writeToFile:atomically:
保存することができます。
例:
- (NSArray *)loadMyArray
{
NSArray *arr = [NSArray arrayWithContentsOfFile:
[NSString stringWithFormat:@"%@/myArrayFile", NSHomeDirectory()]];
return arr;
}
// returns success flag
- (BOOL)saveMyArray:(NSArray *)myArray
{
BOOL success = [myArray writeToFile:
[NSString stringWithFormat:@"%@/myArrayFile", NSHomeDirectory()]];
return success;
}
ここには、これを行うさまざまな方法の例がたくさんあります: http://www.cocoacast.com/?q=node/167
于 2010-08-17T11:04:59.907 に答える