每个Xcode iOS模拟器操作系统版本的唯一NSUserDefaults?

时间:2014-01-11 16:48:57

标签: ios xcode ios-simulator

我最近为iOS6和iOS7运行了我的应用程序。但是,我注意到在iOS6模拟器中加载用于iOS7数据时保存在NSUserDefaults中的模拟器不存在。

例如,我使用此代码保存一个列表(当模拟器运行iOS6时):

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:myList];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"List_v1"];

我可以轻松地使用iOS6重新启动模拟器并使用此代码检索我的列表没有任何问题:

NSData *savedList = [[NSUserDefaults standardUserDefaults] objectForKey:@"List_v1"];
myList = [NSKeyedUnarchiver unarchiveObjectWithData:savedList];

但是,如果我使用iOS7重新启动模拟器并运行相同的代码来加载列表,它将不再可用。模拟器是否为每个OS版本保持数据分开?

3 个答案:

答案 0 :(得分:4)

是的,每个iOS版本都有自己的文件夹: /Users/YOUR_USER/Library/Application Support/iPhone Simulator/IOS_VERSION

答案 1 :(得分:1)

每个iOS版本(不仅仅是iOS 6或iOS 7,还有iOS 6.1与iOS 6.0分开存储)都将其数据放在自己的文件夹中。此数据不仅仅是NSUserDefaults,还有您的应用程序从/向磁盘读/写的任何其他数据。它们被视为独立的安装,彼此独立。

答案 2 :(得分:0)

编辑:我的理解是错的。似乎用户默认只按操作系统版本分隔设备。运行相同操作系统版本的所有模拟设备都读/写相同的用户默认值。

不同的操作系统版本确实有不同的默认文件。

这是值得注意的。如果将与设备相关的设置保存为默认设置,则可能会在SIM卡上进行非常混乱的测试。

指出这个是疯狂的。