有人可以证实我对这行代码的怀疑。
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;
答案 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
中使用的UITableView
。 There's a convenience method to do this 很多更简单:
NSIndexPath *row0IndexPath = [NSIndexPath indexPathForRow:0 inSection:[indexPath section]];
答案 2 :(得分:0)
NSUInteger不是Objective-c对象。它是无符号整数的typedef。根据您的平台,它可能是int或long。但它不是一个对象。所以你基本上只有一个c数组。