用不兼容的void类型初始化NSMutableArray __strong。

3
这是返回错误的内容:
NSMutableArray *newArray = [[[NSMutableArray alloc] initWithArray:[NSJSONSerialization JSONObjectWithData:[[[appDelegate.Matches objectAtIndex:(NSUInteger)indexPath] objectForKey:@"chat"] dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil]] addObject:[NSDictionary dictionaryWithObjectsAndKeys:message, @"message", [NSString stringWithFormat:@"%llu", appDelegate.userId], @"id", nil]];

6
如果需要的话,你应该真的缩短那些代码行长度。使用额外的变量会有助于提高可读性。 - Anurag
3
不仅需要易读性,还需要调试。你实际上可以看到你在这里调用的约10个方法中哪一个是罪魁祸首。 - Sean
3
第21届“国际模糊C代码大赛”即将举行...http://www.ioccc.org/。你应该考虑参加。 - Ashley Mills
1个回答

13

“天啊,这是什么奇怪的表达方式!”

如果你把它分成多行,就可以很容易地看到问题所在。

或者更有可能的是,错误会神秘地消失。

问题在于addObject:返回(void),但你却试图将该方法的返回值赋给变量。


4
+1 表示赞同“Holy run-on expression, Batman!”(天哪,这句话怎么这么长,蝙蝠侠!)。还有答案 ;)。 - Paul.s
为了简化代码,制作一些长句表达并不是什么坏事,对吧? - michaela
1
你的问题正是为什么这种写法不好的典型例子;它会隐藏错误,使得代码更难以调试。比如说,如果要在调试器中逐步执行[appDelegate.Matches objectAtIndex:(NSUInteger)indexPath]表达式并查看其结果,该怎么做呢? - bbum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接