Objective-C和ARC:为什么在初始化期间存储到的值永远不会被读取,并且指针不兼容

Objective-C和ARC:为什么在初始化期间存储到的值永远不会被读取,并且指针不兼容,objective-c,Objective C,当我运行analyzer工具时,我在初始化过程中获取存储到(jsonArr和myrrh)的值时,不会在行上读取,并且不兼容的指针类型从“NsDictionarty*”分配给“NSMutableArray*” 在Obj-C中,变量是类型化的,这意味着只能分配符合该变量类型的值 在您的代码中(很难阅读)myArr属于NSMutableArray*(对NSMutableArray的引用),而jsonArr属于NSDictionary*(对NSDictionary的引用) 在没有类型转换操作(cast)

当我运行analyzer工具时,我在初始化过程中获取存储到(jsonArr和myrrh)的值时,不会在行上读取,并且不兼容的指针类型从“NsDictionarty*”分配给“NSMutableArray*”


在Obj-C中,变量是类型化的,这意味着只能分配符合该变量类型的值

在您的代码中(很难阅读)
myArr
属于
NSMutableArray*
(对
NSMutableArray
的引用),而
jsonArr
属于
NSDictionary*
(对
NSDictionary
的引用)


在没有类型转换操作(cast)的情况下,无法将jsonArr中的值分配给myArr。

在Obj-C中,变量是类型化的,这意味着只能分配符合该变量类型的值

在您的代码中(很难阅读)
myArr
属于
NSMutableArray*
(对
NSMutableArray
的引用),而
jsonArr
属于
NSDictionary*
(对
NSDictionary
的引用)


如果没有类型转换操作(cast),就无法将jsonArr中的值分配给myArr。

请看前两行:

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];

请看前两行:

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];

请用实际代码更新您的问题。它使代码更易于阅读和引用。为什么名称
jsonArr
变量是字典?请用实际代码更新您的问题。它使代码更容易阅读和引用。为什么name
jsonArr
是一个字典变量?很高兴我能帮上忙。请不要忘记接受最好的答案,以表明您的问题已经解决。很高兴我能提供帮助。请不要忘记接受最佳答案,以表明您的问题已经解决。