我使用[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以在我想要的应用程序中获取它。
谢谢。
答案 0 :(得分:0)
请勿这样做。请勿将内存地址存储在某种数据库中,并在以后尝试解决它们的时间,这绝对是不可靠的。
相反,您应该将模型数据(例如微调器状态等)存储在某个位置,并添加和订阅通知(选中NSNotificationCenter
)以在模型更改时更新视图。