NSArray之后的方括号指数是什么意思?

时间:2013-11-08 20:36:12

标签: objective-c cocoa-touch indexing nsarray objective-c-literals

通过iTunes U开发适用于iPhone和iPad的iOS 7应用程序以及第120页的第3讲幻灯片,这是一个测验问题,询问以下代码行的作用。坦率地说,我有点难过,希望有人可以分解它。

cardA.contents = @[cardB.contents,cardC.contents][[cardB match:@[cardC]] ? 1 : 0];

所以,我得到了第一部分,cardA.contents =数组中包含cardB.contentscardC.contents的新数组。但是,接下来(我猜??)一个返回1或0的索引,取决于cardB是否匹配包含cardC的数组。

这是我没有“得到”的,也许这只是一个语法问题......这是什么呢?

怎么样

cardA.contents = @[cardB.contents,cardC.contents][0];

cardA.contents = @[cardB.contents,cardC.contents][1];

有效吗?或者,我错过了什么?

2 个答案:

答案 0 :(得分:3)

你的理解是完全正确的;你只是缺少一点语法。 Clang介绍的NSArray功能的[array objectAtIndexedSubscript:index]的订阅访问权限。

编译器将其转换为对{{1}}的调用。

答案 1 :(得分:2)

像往常一样,在写这篇文章时,它是有道理的。它确实说,如果cardB匹配cardC,使用索引[1](cardC),如果没有,使用索引[0](cardB)

所以,

cardA.contents = cardB.contents // if does NOT match
cardA.contents = cardC.contents // if matches

(基于指数)。

Duh ..抱歉愚蠢的问题......