#iphone #xcode3.2
#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;
У меня есть другие представления / контроллеры / классы / что угодно, что работает с этими массивами, и они функционируют. Что мне поместить внутрь этого «Глобального» и «AppDelegate.h» и «AppDelegate.m», чтобы эти массивы сохранялись, когда это приложение переходит в фоновый режим и загружается при запуске приложения? Мне нужно использовать этот «NSDocumentDirectory», потому что эти данные важны.
Пожалуйста, сделайте ваши объяснения ДЕЙСТВИТЕЛЬНО ПРОСТЫМИ. У меня меньше недели опыта. Спасибо!!
Редактировать: Сделал то, что предложил Джорис. Добавлено это в 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:
Не очень подробно, но:
в методе приостановки вашего appdelegate вы можете использовать:
[NSKeyedArchiver archiveRootObject:arrayTable toFile:...];
и в методе возобновления:
arrayTable = [[NSKeyedUnarchiver unarchiveObjectWithFile:...] retain];
Комментарии:
1. Можете ли вы показать мне все это целиком? О том, как это делается? Я уже несколько дней пытаюсь использовать эти NSKeyedArchiver и NSKeyedUnarchiver и собираюсь выбросить свой Mac из окна.
2. Все это? Не хватает только: точных имен методов в вашем AppDelegate, но они должны быть простыми, и генерации пути к выходному файлу
3. Сделал то, что вы предложили. Объявлен «archivePath» для использования. Затем следуют NSKeyedArchiver и Unarchiver. По-прежнему не работает. Есть идеи, почему? О, и почему разархиватор запрещает мне добавлять . между self и archivepath? Это не позволит мне создавать.
4. вы забыли сохранить массивы после их разархивирования