如何通过将其存储在[NSKeyedArchiver archivedDataWithRootObject:]中来获得具有相同地址的数组?

时间:2018-07-09 09:56:39

标签: ios objective-c uinavigationcontroller nsuserdefaults nskeyedarchiver

我使用[NSKeyedArchiver archivedDataWithRootObject:]将navigationController存储在数据中,我想在应用程序中获取它。我的问题是,当我用NSKeyedUnarchiver调用它时,我的地址不正确。如何获得好的?

存储前的地址:(UINavigationController *)$ 0 = 0x00007f956e079200

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.navigationController];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"navigationController"];

NSData *data2 = [[NSUserDefaults standardUserDefaults] valueForKey:@"navigationController"];
[NSKeyedUnarchiver unarchiveObjectWithData:data2];  

检索时的地址:(UINavigationController *)$ 1 = 0x00007f956e0a8a00

我想存储(UINavigationController *)$ 0 = 0x00007f956e079200以在我想要的应用程序中获取它。

谢谢。

1 个答案:

答案 0 :(得分:0)

请勿这样做。请勿将内存地址存储在某种数据库中,并在以后尝试解决它们的时间,这绝对是不可靠的。

相反,您应该将模型数据(例如微调器状态等)存储在某个位置,并添加和订阅通知(选中NSNotificationCenter)以在模型更改时更新视图。