当我运行分析器工具时,我在初始化过程中将值存储到(jsonArr和myrrh)永远不会在行上读取,并且不兼容的指针类型从' NsDictionarty *分配给' NSMutableArray * '
答案 0 :(得分:5)
看看前两行:
NSDictionary *jsonArr = [[NSDictionary alloc] init];
jsonArr = [json objectForKey:@"categories"];
第一行创建并分配一个新词典。
然后第二行将新值重新分配给同一个变量。这会抛弃原始值。因此警告该值永远不会被使用。
这两行应该只是:
NSDictionary *jsonArr = [json objectForKey:@"categories"];
实际上,更好的是:
NSDictionary *jsonDict = json[@"categories"];
不要使用Arr
命名字典变量。这令人困惑。并使用现代语法。
myArr
的问题是相同的。虽然您还有一个问题,即尝试将NSDictionary
分配给NSMutableArray
。这两者绝不相容。
可能jsonArr
已正确命名,其类型应为NSArray
而非NSDictionary
。即便如此,您也无法将NSArray
分配给NSMutableArray
。你需要制作一个可变副本:
NSArray *jsonArr = json[@"categories"];
NSMutableArray *myArr = [jsonArr mutableCopy];
答案 1 :(得分:1)
在Obj-C中键入变量,意味着只能分配符合该变量类型的值。
在您的代码中(很难阅读)myArr
的类型为NSMutableArray *
(对NSMutableArray
的引用),而jsonArr
的类型为{{1} }(对NSDictionary*
的引用)
如果没有类型转换操作(强制转换),您无法将jsonArr中的值分配给myArr。