Objective c 保存应用程序的数据,如果我更新应用程序,请不要将其丢失

Objective c 保存应用程序的数据,如果我更新应用程序,请不要将其丢失,objective-c,save,Objective C,Save,如果我有一个应用程序的本地数据,假设一个本地高分,我存储了游戏的所有分数。 如果我发布应用程序的更新,我将丢失所有数据。 我使用此方法保存数据: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filename = [d

如果我有一个应用程序的本地数据,假设一个本地高分,我存储了游戏的所有分数。 如果我发布应用程序的更新,我将丢失所有数据。 我使用此方法保存数据:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filename = [documentsDirectory stringByAppendingPathComponent:@"defaultStage.dat"];

char cstr[512]={0};
[filename getCString:cstr maxLength:512 encoding:NSASCIIStringEncoding];

defaultStage=1;
FILE *pFile=fopen(cstr, "wb");
// and save with fprintf    

有一种方法可以“永久”保存数据,在我重新安装或更新应用程序时不会丢失?

在iOS/Mac OS X下,您有许多选项可以保存数据。您可以从查看和开始。检查要保存的数据量,看看哪一个适合您的需要。

奇怪的是,在更新时,保存到文档目录不会丢失数据。真的吗?至于删除和重新安装应用程序,没有办法将数据保存在手机本地(即在应用程序的沙箱之外,当应用程序被删除时,沙箱会被删除)。您需要使用iCloud或远程web服务器

为了保存高分,我建议使用NSUserDefaults,它在更新应用程序时也不会被删除


编辑:我假设您谈论的是iOS,而不是OS X

,所以不是NSArray*path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,是);我可以使用:NSArray*path=NSSearchPathForDirectoriesInDomains(NSUserDefaults,NSUserDomainMask,YES);?