У меня проблема с NSKeyedArchiver, которая довольно долго меня озадачивала и не может точно определить ошибку.iOS NSKeyedArchiver unarchive возвращает пустой массив
У меня есть изменяемый массив, состоящий из объектов класса «Устройство». В моей AppDelegate я держу mutableArray Устройств и у меня есть следующие три функций:
- (void) loadDataFromDisk {
self.devices = [NSKeyedUnarchiver unarchiveObjectWithFile: self.docPath];
NSLog(@"Unarchiving");
}
- (void) saveDataToDisk {
NSLog(@"Archiving");
[NSKeyedArchiver archiveRootObject: self.devices toFile: self.docPath];
}
- (BOOL) createDataPath {
if (docPath == nil) {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *docsDir = [paths objectAtIndex:0];
self.docPath = [docsDir stringByAppendingPathComponent: @"devices.dat"];
NSLog(@"Creating path");
}
NSLog(@"Checking path");
NSError *error;
BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath: docPath withIntermediateDirectories: YES attributes: nil error:&error];
if (!success) {
NSLog(@"Error creating data path: %@", [error localizedDescription]);
}
return success;
}
я получаю пустой mutableArray от разархивирования процесса. Я использую ARC, не уверен, что это имеет к этому какое-то отношение.
Привет, спасибо, что поделились этим, у меня такая же проблема, но я не понимаю ответа :(... Корневой объект - это словарь, и вы вставляете в него массив, для правильного ключа? то когда вы открываете, вы отформатируете его в словаре? или в массиве? – ColdSteel
Я включил полные функции, надеюсь, что это поможет. –
Большое спасибо! * Thumbs up * – ColdSteel