UserDefaults不保存值iphone

Posted

技术标签:

【中文标题】UserDefaults不保存值iphone【英文标题】:UserDefaults not saving values iphone 【发布时间】:2010-07-02 06:56:10 【问题描述】:

这是我面临的一个奇怪问题。我用来将我的值保存到 nsuserdefaults 的以下代码工作正常。保存和检索所有值,但它现在完全让我发疯了。它没有保存任何值,并且检索到的值被视为无效。我正在使用编码和解码来保存名为 companyObject 的自定义对象。没有存储一个值。

-(void)saveCustomObject

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *companyArray = [[NSMutableArray alloc]init];
for(Company *companyObj in companyObjectsArray)

    [companyArray addObject: [NSKeyedArchiver archivedDataWithRootObject:companyObj]];


[defaults setObject:companyArray forKey:@"companyData"];
[defaults setObject:userCompanyInfo.sessionkey forKey:@"sessionkey"];
[defaults setObject:userCompanyInfo.deviceid forKey:@"deviceid"];
[defaults setObject:userCompanyInfo.userid forKey:@"userid"];
[defaults setObject:userCompanyInfo.service_type forKey:@"service_type"];
[defaults setObject:userCompanyInfo.isduallogin forKey:@"isduallogin"]; 
[defaults setObject:userCompanyInfo.securitycode forKey:@"securitycode"];   

[defaults synchronize]; 




-(void)loadCustomObject

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

NSMutableArray *companies = [NSMutableArray array];
NSArray *oldCompanies = [[NSUserDefaults standardUserDefaults] arrayForKey:@"companyData"];
if( companies )
    
        for( NSData *data in oldCompanies )
            
                Company* companyObj = (Company*) [NSKeyedUnarchiver unarchiveObjectWithData:data];
                [companies addObject:companyObj];
            
    

NSString *sessionKey = [defaults stringForKey:@"sessionkey"];
NSString *deviceId = [defaults stringForKey:@"deviceid"];
NSString *userId = [defaults stringForKey:@"userid"];
NSString *service_type = [defaults stringForKey:@"service_type"];
NSString *isduallogin = [defaults stringForKey:@"isduallogin"];
NSString *securitycode = [defaults stringForKey:@"securitycode"];

有人可以帮忙吗?

在我在模拟器上运行它之间。所有值[即这里的字符串] 已经到位,只是没有被插入。如果我打印存储值的变量的描述,我也会在控制台中打印这一行: 表达式中的语法错误,在 `variable)' 附近。

编辑: 此部分运行时的此应用程序实际上是在 MAC pc 上运行,但现在我在 macbook 上运行它。这会造成这个问题吗?

提前感谢。

【问题讨论】:

【参考方案1】:

由于您过去曾使用过此方法,因此您可以将其与您此后所做的任何更改进行比较。你的版本控制中是否有一些代码从它工作时开始?

我猜这将表明您以某种方式更改了 Company 并且编码不正确?


PS,你究竟在输入什么来尝试'打印描述' - 如果这是一个语法错误,我们应该能够很容易地修复它?

【讨论】:

这似乎不是语法错误。我在打印描述中的每个语句都收到了该错误,并且该对象似乎没有分配,而是显示为“ 嗯,这很奇怪。您能否编辑您的问题并添加您用于打印说明的代码。还要添加控制台错误。也许其他人会有不同的想法! 感谢 deanWombourne 试图帮助我。我不知道确切的问题,但我通过在 .h 文件中声明所有变量来解决它。暂时解决了这个问题。没有本地声明的变量使其自身可供访问。【参考方案2】:

如果您想使用模拟器并获取变量值,您需要使用 xcode 调试配置(不是发布或分发)进行构建和调试。希望这可以帮助!

【讨论】:

以上是关于UserDefaults不保存值iphone的主要内容,如果未能解决你的问题,请参考以下文章

从 UserDefaults 获得的布尔值打印为 0 或 1,即使保存为 Any

将值保存到 UserDefaults [重复]

如何在 SwiftUI 中将颜色选择器值保存到 UserDefaults 中?

UserDefaults 不会在应用程序关闭并重新打开后保存数据

UserDefaults - 使用 Xcode Simulator 时保存不一致

userdefaults 不保存按钮状态