当我从iOS 4+更新到iOS 5时,我丢失了我自己的应用程序中的所有数据。我还升级到了OSX Lion和Xcode4。我在iTunes中备份了我的iPhone,并且能够使用iPhone备份提取器来获取数据。
我通过以下方式将应用程序数据保存到文件中:
- (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];
}这就是我试图理解的。我在Xcode4中打开项目,从备份中复制.data文件并将其粘贴到/iPhone Simulator/5.0/Applications/Some digit/Documents中。理论上,当应用程序启动时,它会查看该文件夹并加载.data文件(如果存在)。事实并非如此。然而,如果我创建一些测试数据并保存它,应用程序将工作得很好。它将用相同的文件名替换备份文件,并在我重新启动应用程序时正确加载它。
这让我想知道在XCode3/XCode4之间或者在iOS4和iOS5之间是否有一些NSCoder/归档的变化。
有人知道这是怎么回事吗?一旦我弄清楚这一点,我计划使用备份数据文件并将其复制到当前应用程序的/Document文件夹中。实际上,想起来,我也不知道该怎么做。应用程序的/Document文件夹驻留在手机中。我将不得不看看我是否可以使用iTunes并将数据注入应用程序。不管怎样,首先要做的是!了解系统。
谢谢!
发布于 2011-11-22 04:16:26
事实证明,iOS5安装的是该应用程序的一个较旧版本。很奇怪,但要确保你把所有的配置都准备好了。
https://stackoverflow.com/questions/8130619
复制相似问题