【问题标题】:NSUserDefaults working on device and simulator but returning NULL on device when installed via .ipaNSUserDefaults 在设备和模拟器上工作,但在通过 .ipa 安装时在设备上返回 NULL
【发布时间】:2013-05-17 17:45:41
【问题描述】:

我遇到了非常奇怪的问题。

我正在保存用户电子邮件和带有[[NSUserDefaults standardUserDefaults] synchronize] 的加密密钥,以便使用我的 ipad 应用程序登录我的网络服务器。此方法成功保存键值并在模拟器上完美运行,如果我使用 USB 线将应用程序安装到我的设备上,也可以完美运行。

但是,如果我为企业用户上传了我的 .ipa 文件并且他们下载并安装了应用程序 [[NSUserDefaults standardUserDefaults] synchronize] 不会保存电子邮件和密钥并返回 null

[[NSUserDefaults standardUserDefaults] setInteger:userId forKey:@"user_id"];
[[NSUserDefaults standardUserDefaults] setObject:self.email.text forKey:@"email"];
[[NSUserDefaults standardUserDefaults] setObject:post_key forKey:@"key"];

[[NSUserDefaults standardUserDefaults] synchronize];

NSString *post_email = [[NSUserDefaults standardUserDefaults] valueForKey:@"email"];
    NSString *post_key=[[NSUserDefaults standardUserDefaults] valueForKey:@"key"];

 NSLog(@"post_email %@",post_email);
 NSLog(@"post_key %@",post_key);

登录模拟器和设备

post_email xxxxxx@gmail.com
post_key xxxxxxx

LOG ON ORGANIZER 安装 .ipa 文件的设备:

��May 17 13:31:19  xxxxxx[1590] <Warning>: post_email (null)
��May 17 13:31:19  xxxxxxx[1590] <Warning>: post_key (null)

为什么会这样?我怎样才能解决这个问题?

EDIT FOR FUTURE REFEFRENCES::::::

尽管 rmaddy 的回答对于空值是正确的,但确切的问题是: ASIHTTPRequest begins but never ends

答案是:https://groups.google.com/forum/?fromgroups#!topic/asihttprequest/fw7PDcD2wKI

【问题讨论】:

  • 使用objectForKey:,而不是valueForKey:
  • 也许self.email.text 本身就是 nil。
  • 愚蠢的问题:可以在企业级别禁用 NSUserDefaults 功能吗?
  • @rmaddy 从技术上讲,您已经回答了我的问题,但这意味着这不是确切的问题,如果您写下答案,我会接受。
  • @SpaceDust 好的,我添加了它作为答案。

标签: ios objective-c ipad nsuserdefaults ipa


【解决方案1】:

要从NSUserDefaults 获取对象,您应该使用objectForKey:,而不是valueForKey:valueForKey: 用于键值编码(KVC)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多