【问题标题】:Nsdictionay keyvalue coding error when trying to access the values尝试访问值时出现字典键值编码错误
【发布时间】:2015-11-05 10:01:33
【问题描述】:
{
  "gender" : "Male",
  "city" : "chenna",
  "instituteName" : "srm",
    "profileImage" : "ProfileImage",
    "dob" : "DOB",
     "emailAddress" : "saxasx",
  "isStudent" : "true",
 "studentIdValidity" : "Month2Year5",
"studentIdImage" : "IDImage",
 "name" : "xasx",
 "phoneNumber" : "9092256227"
}

     NSDictionary *dic ;
dic = [[NSUserDefaults standardUserDefaults]objectForKey:@"fizzstudentjson"];

    NSLog(@"%@",dic);

NSString *strng = [dic objectForKey:@"city"];
NSLog(@"%@",strng);

当我尝试我的应用程序崩溃时访问 nsstring 中的字典值 这是我写的代码帮帮我

【问题讨论】:

  • 这些 NSLogs 向你展示了什么?或者你能附上崩溃日志吗?
  • 对于 dic log 我得到了上面的字典字符串,它说当我使用 valueforKey 时它不是 keyveluecoding
  • @user5276912 你的 sn-p 中的 { "gender" : "Male", ..... } 是什么?调试时是日志吗?
  • 你在哪里设置key的值?
  • 检查你的用户默认的城市是否可用

标签: ios objective-c nsstring nsdictionary


【解决方案1】:

作为关于数据的日志,它可能是 NSString 格式,而不是 NSDictionary。所以你需要在使用前将其转换为 NSDictionary 。试试这段代码

    NSString *fizzstudentjson = [[NSUserDefaults standardUserDefaults]objectForKey:@"fizzstudentjson"];

    NSData *data = [fizzstudentjson dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

    NSString *city = dictionary[@"city"];

【讨论】:

  • id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];对我有用
【解决方案2】:

这对我有用。

NSDictionary *dictionary = @{
    @"gender" : @"Male",
    @"city" : @"chenna",
    @"instituteName" : @"srm",
    @"profileImage" : @"ProfileImage",
    @"dob" : @"DOB",
    @"emailAddress" : @"saxasx",
    @"isStudent" : @"true",
    @"studentIdValidity" : @"Month2Year5",
    @"studentIdImage" : @"IDImage",
    @"name" : @"xasx",
    @"phoneNumber" : @"9092256227"
    };

[[NSUserDefaults standardUserDefaults] setObject:dictionary forKey:@"fizzstudentjson"];

NSDictionary *dic = [[NSUserDefaults standardUserDefaults]objectForKey:@"fizzstudentjson"];

NSLog(@"%@",dic);

NSString *strng = [dic valueForKey:@"city"];
NSLog(@"%@",strong);

结果:陈娜

【讨论】:

  • 您是否将字典数据保存在 userDefaluts 中
  • [[NSUserDefaults standardUserDefaults] setObject:dictionary forKey:@"fizzstudentjson"];
  • 是的,我做到了。实际上保存了我在不同的viewController中访问我可以在日志中看到(nslog dic)的数据但无法访问
  • 什么是崩溃日志?
  • 它不是键值编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 2017-12-14
  • 2014-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多