0
我遇到了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
我包含了完整的功能,希望對您有所幫助 –
非常感謝!*豎起大拇指* – ColdSteel