简单保存/加载整个阵列

时间:2011-06-03 15:12:27

标签: iphone xcode3.2

我是新人。一直试图保存/加载几个阵列但无济于事。 我有" Global.h"和" Global.m"为其他类提供数组。

在Global.h中

extern NSMutableArray *arrayTable;
extern NSMutableArray *arrayPurpose;
@interface Global : NSObject <NSCoding> {
}
Global.m中的

NSMutable *arrayTable;
MSMutable *arrayPurpose;

我还有其他的视图/控制器/类/可以使用这些数组并且它们正在运行。我在这个&#34; Global&#34;和#34; AppDelegate.h&#34;和#34; AppDelegate.m&#34;以便当这个应用程序进入后台时保存这些数组并在应用程序启动时加载?我需要使用这个&#34; NSDocumentDirectory&#34;因为这些数据很重要。

请妥善保管您的解释。我有不到一周的经验。谢谢!

编辑:Joris建议了什么。 将其添加到AppDelegate

-(NSString *)archivePath {
NSString *docDir =
[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)objectAtIndex: 0];
return [docDir stringByAppendingPathComponent:@"TableData.dat"];
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
[NSKeyedArchiver archiveRootObject:arrayTable toFile:self.archivePath];
    [NSKeyedArchiver archiveRootObject:arrayPurpose toFile:self.archivePath];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
[window addSubview:rootController.view];
[self.window makeKeyAndVisible];

arrayTable = [NSKeyedUnarchiver unarchiveObjectWithFile:[self archivePath]];
arrayPurpose = [NSKeyedUnarchiver unarchiveObjectWithFile:[self archivePath]];
if (arrayTable == nil) {
    arrayPurpose = [[NSMutableArray alloc]init];
    arrayTable = [[NSMutableArray alloc]init];
}
return YES;

}

1 个答案:

答案 0 :(得分:0)

不是很详细但是:

在您的appdelegate的暂停方法中,您可以使用:

[NSKeyedArchiver archiveRootObject:arrayTable toFile:...];

并在简历方法中:

arrayTable = [[NSKeyedUnarchiver unarchiveObjectWithFile:...] retain];