消息传递符号与Dot符号以及NSArray中的值

时间:2014-02-21 16:31:23

标签: objective-c

我有这段代码,我希望消息符号相当于:

cell.textLabel.text = self.dataArray[indexPath.row];

我能做的最好的事情是:

[[cell textLabel] setText: [ what goes here? ]];

2 个答案:

答案 0 :(得分:3)

完全展开的版本是:

[[cell textLabel] setText:[[self dataArray] objectAtIndex:[indexPath row]]];

但是,这与您最初发布的内容完全没有区别。它们与编译器完全相同。


这里使用的两种语法是:

点语法

适用于-foo-setFoo:方法:

cell.textLabel -> [cell textLabel]

cell.textLabel.text = ... [[cell textLabel] setText:...]

下标

这适用于-objectAtIndex:-setObject:atIndex:方法(如果它是NSArray),以及objectForKey:-setObject:forKey:方法(如果它是NSDictionary }):

dataArray[indexPath.row] -> [dataArray objectAtIndex:indexPath.row]

调用的实际方法是objectAtIndexedSubscript: ...,但它们类似于更常见的objectAtIndex:方法。有关此语法的详细信息,请check out the Clang documentation

答案 1 :(得分:1)

[[cell textLabel] setText: [self dataArray][indexPath row]];

或:

[[cell textLabel] setText: [_dataArray[indexPath row]];

我假设self.dataArray的ivar是_dataArray(默认);

或者你可以致电

[[cell textLabel] setText: [[self dataArray] objectAtIndex:[indexPath row]]];