當我從iOS 4+更新到iOS 5時,我在自己的應用程序中丟失了所有數據。我也升級到OSX Lion和Xcode 4.我在iTunes中備份我的iPhone,並能夠使用iPhone Backup Extractor獲取數據。iOS 5中的NSDocumentDirectory導致應用程序數據丟失
我我的應用程序數據保存到以下列方式文件:
- (NSString *)iouArrayPath
{
// Standard way of getting file path for iOS
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
NSLog(@"Directory: %@", dir);
return pathInDocumentDirectory(@"IouTableArray.data");
}
- (void)archieveIou
{
NSLog(@"archieveIou");
// Get the path to the document directory
NSString *iouPath = [self iouArrayPath];
// grab the objects to archieve
NSMutableArray *iouTableArray = [iouViewController iouTableArray];
// ARCHIVE DATA
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:iouTableArray forKey:@"IouTableArray"];
[archiver finishEncoding];
[data writeToFile:iouPath atomically:YES];
if([data writeToFile:iouPath atomically:YES]) {
NSLog(@"writeToFile success!");
}
else {
NSLog(@"writeToFile failed");
}
[archiver release];
}
這就是我試圖理解。我在Xcode 4中打開項目,從備份複製.data文件並將其粘貼到/iPhone Simulator/5.0/Applications/Some digit/Documents
。理論上,當應用程序啓動時,它將查看該文件夾並加載.data文件(如果存在)。它不是。但是,如果我創建一些測試數據並保存,該應用程序將正常工作。它將替換具有相同文件名的備份文件,並在重新啓動應用程序時正確加載它。
這讓我想知道是否有一些NSCoder/XCode3/XCode4或iOS4和iOS5之間的演變。
有誰知道發生了什麼事?一旦我明白了這一點,我打算使用備份數據文件並將其複製到當前應用程序/ Document文件夾中。其實,想一想,我不知道該怎麼做。該應用程序的/ Document文件夾駐留在手機中。我將不得不查看是否可以使用iTunes並向數據注入應用程序。無論如何,首先是第一件事!瞭解系統。
謝謝!