基本目标C语法问题

时间:2011-01-13 19:35:55

标签: objective-c uitableview ios

有人可以证实我对这行代码的怀疑。

NSUInteger newPath[] = {[indexPath section],0};

我很确定它是NSUIntegers的C数组。 我这是对的吗? 你甚至可以制作Objective C对象的C数组吗?

以下是上下文中的代码:

-(UITableViewCellEditingStyle)tableView:(UITableView *) tableViewEditingStyleForRowAtIndexPath:(NSIndexPath*)indexPath{

if ([self isToManyRelationshipSection:[indexPath section]]) {
    NSUInteger newPath[] = {[indexPath section],0};
    NSIndexPath *row0IndexPath = [NSIndexPath indexPathWithIndexes:newPath length:2];

    NSString *rowKey = [rowKeys nestedObjectAtIndexPath:row0IndexPath];
    NSString *rowLabel = [rowLabels nestedObjectAtIndexPath:row0IndexPath];
    NSMutableSet *rowSet = [managedObject mutableSetValueForKey:rowKey];//!!!: to-many?
    NSArray *rowArray = [NSArray arrayByOrderingSet:rowSet byKey:rowLabel ascending:YES];

    if ([indexPath row] >= [rowArray count]) {
        return UITableViewCellEditingStyleInsert;
    }

    return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;

3 个答案:

答案 0 :(得分:3)

  

我很确定它是NSUIntegers的C数组。我是对的吗?

是的,确实如此。

  

你甚至可以制作Objective C对象的C数组吗?

你可以。例如,这是一个包含两个NSString *的数组:

NSString *myStrings[] = {@"one", @"two"};

这有用吗?有时候,如果你需要一个对象数组,使用NSArray几乎总是有益的。

答案 1 :(得分:3)

是的,你是对的。然而...

NSUInteger newPath[] = {[indexPath section],0};
NSIndexPath *row0IndexPath = [NSIndexPath indexPathWithIndexes:newPath length:2];

我会强烈阻止您使用此格式创建旨在NSIndexPath中使用的UITableViewThere's a convenience method to do this 很多更简单:

NSIndexPath *row0IndexPath = [NSIndexPath indexPathForRow:0 inSection:[indexPath section]];

答案 2 :(得分:0)

NSUInteger不是Objective-c对象。它是无符号整数的typedef。根据您的平台,它可能是int或long。但它不是一个对象。所以你基本上只有一个c数组。