为什么出错:类不符合键名的键值编码标准?

问题描述 投票:-2回答:1

根据在目标c中使用以下代码的Xcode自动完成建议中的建议,产生了运行时错误,

for (int i = 1; i <= 10; i++)
{
    NSLog(@"%d", i);

    NSDictionary *dic = [[NSDictionary alloc] init];
    [dic setValue:@"Alex" forKey:@"name"];
    [dic setValue:@"45" forKey:@"Age"];
}

2020-03-29 21:55:34.588607 + 0600测试[5299:15492347] ***终止应用由于未捕获的异常“ NSUnknownKeyException”,原因:'[<__ nsdictionary0> setValue:forUndefinedKey:]:此类别不符合键值编码的键名。'

我想念什么?

更新

因为matt注释NSDictionary不可变,所以>

  1. 为什么setValue方法可用于Xcode上的自动完成建议中的NSDictionary?

  2. 为什么不能在编译时而不是运行时检测到修改非可变集合的方法?

如Xcode自动完成建议中所建议,在目标c中使用以下代码产生了运行时错误,对于(int i = 1; i <= 10; i ++){NSLog(@“%d”,i); NSDictionary * dic = [[[NSDictionary ...

ios objective-c runtime-error nsdictionary
1个回答
0
投票

我通过将setValue更改为setObject解决了此问题,

© www.soinside.com 2019 - 2024. All rights reserved.