我遵循了使用UITableView
的教程。完成的代码
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(editingStyle == UITableViewCellEditingStyleDelete)
{
Message *message = [messageList objectAtIndex:indexPath.row];
[self.persistencyService deleteMessagesFor:message.peer];
[messageList removeObject:message];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
}
}
我的问题是:@[indexPath]
做了什么?是否与?相同:
[NSArray arrayWithObject:indexPath]
答案 0 :(得分:9)
是的它是相同的,它只是定义数组的简短符号。您也可以使用NSDictionary和NSNumber执行相同的操作。这里有一些样本(and some more here):
NSArray *shortNotationArray = @[@"string1", @"string2", @"string3"];
NSDictionary *shortNotationDict = @{@"key1":@"value1", @"key2":@"value2"};
NSNumber *shortNotationNumber = @69;
答案 1 :(得分:2)
是的,确实如此。它是现代目标-C的新特征。
您可以使用文字@
创建新数组,就像您拥有的示例一样。这不仅适用于NSArrays
,也适用于NSNumbers
和NSDictionaries
,例如:
NSNumber *fortyTwo = @42; // equivalent to [NSNumber numberWithInt:42]
NSDictionary *dictionary = @{
@"name" : NSUserName(),
@"date" : [NSDate date],
@"processInfo" : [NSProcessInfo processInfo] //dictionary with 3 keys and 3 objects
};
NSArray *array = @[@"a", @"b", @"c"]; //array with 3 objects
它也非常适合访问元素,如下所示:
NSString *test = array[0]; //this gives you the string @"a"
NSDate *date = dictionary[@"date"]; //this access the object with the key @"date" in the dictionary
您可以在此处获得更多信息:http://clang.llvm.org/docs/ObjectiveCLiterals.html