每个Xcode iOS模拟器OS版本的唯一NSUserDefault?

每个Xcode iOS模拟器OS版本的唯一NSUserDefault?,ios,xcode,ios-simulator,Ios,Xcode,Ios Simulator,我最近让我的应用程序同时在iOS6和iOS7上运行。但是,我注意到,当加载iOS7模拟器时,在NSUserDefaults中保存的数据在iOS6模拟器中不存在 例如,我用以下代码保存了一个列表(当模拟器运行iOS6时): 我可以使用iOS6轻松地重新启动模拟器,并使用以下代码毫无问题地检索我的列表: NSData *savedList = [[NSUserDefaults standardUserDefaults] objectForKey:@"List_v1"]; myList = [NSKe

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

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

我可以使用iOS6轻松地重新启动模拟器,并使用以下代码毫无问题地检索我的列表:

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

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

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

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

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

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

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

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

这是值得注意的。如果将依赖于设备的设置保存为默认设置,则sim卡上的测试可能会非常混乱


这是麦迪指出的。

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

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

这是值得注意的。如果将依赖于设备的设置保存为默认设置,则sim卡上的测试可能会非常混乱


这是马迪指出的。

看起来是这样的,而且是有道理的。例如,在不同的操作系统版本之间,数据可能以不同的格式存储。例如,在不同的操作系统版本之间,数据可能以不同的格式存储。这是不对的。模拟器中给定iOS版本的所有模拟设备共享相同的数据。运行适用于iOS 7.0的非视网膜iPhone模拟器,然后运行适用于iOS 7.0的视网膜iPad模拟器,您将看到相同的应用程序、相同的NSUserDefaults等。模拟器仅在每个版本的iOS上有单独的文件夹,而不是在每个设备上。真的吗?“那么我需要测试一下。”麦迪,你说得对极了。谢谢你纠正我。我只是假设,不是测试。我的错,这不对。模拟器中给定iOS版本的所有模拟设备共享相同的数据。运行适用于iOS 7.0的非视网膜iPhone模拟器,然后运行适用于iOS 7.0的视网膜iPad模拟器,您将看到相同的应用程序、相同的NSUserDefaults等。模拟器仅在每个版本的iOS上有单独的文件夹,而不是在每个设备上。真的吗?“那么我需要测试一下。”麦迪,你说得对极了。谢谢你纠正我。我只是假设,不是测试。我的错。
NSData *savedList = [[NSUserDefaults standardUserDefaults] objectForKey:@"List_v1"];
myList = [NSKeyedUnarchiver unarchiveObjectWithData:savedList];