5

我想转换NSIndexPathNSString. 我该怎么做?我必须使用这个:

- (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)sourcePath 
{
    [client deletePath:@"/objc/boston_copy.jpg"];
}

在 commitEditingStyle 方法中,我只能NSIndexPath作为输入。

- (void)tableView:(UITableView *)aTableView 
        commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
        forRowAtIndexPath :(NSIndexPath *)indexPath 
{                  
    [self.itemArray  removeObjectAtIndex:indexPath.row];          
    [aTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                      withRowAnimation:YES];    
    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0]
                  withRowAnimation:UITableViewRowAnimationFade];   
}  
4

4 回答 4

5

我在某个时间点将其设为 NSIndexPath 上的一个类别:

@interface NSIndexPath (StringForCollection)

-(NSString *)stringForCollection;

@end

@implementation NSIndexPath (StringForCollection)

-(NSString *)stringForCollection
{
    return [NSString stringWithFormat:@"%d-%d",self.section,self.row];
}

@end
于 2011-05-12T09:26:49.750 回答
4

我做了这个扩展来帮助调试:

@interface NSIndexPath (DBExtensions)
- (NSString *)indexPathString;
@end

@implementation NSIndexPath (DBExtensions)
- (NSString *)indexPathString;
{
  NSMutableString *indexString = [NSMutableString stringWithFormat:@"%lu",[self indexAtPosition:0]];
  for (int i = 1; i < [self length]; i++){
    [indexString appendString:[NSString stringWithFormat:@".%lu", [self indexAtPosition:i]]];
  }
  return indexString;
}
@end
于 2013-08-18T06:52:49.790 回答
1

您不能将 NSIndexPath 转换为字符串—— NSIndexPath 实际上只是一个整数数组。假设“转换”意味着您要访问与特定路径关联的数据,则必须返回该数据的源。

如果您从对象数组生成表(通常是这种情况),那么您只需查看数组索引处的对象,该索引等于 indexPath 的第一个元素。如果表是分段的,那么您需要查看如何访问数据以创建分段 - 它可能与基于某些对象属性的对象排序有关。

没有转换,只是以与生成表时访问数据源相同的方式查看数据源。

于 2011-05-12T09:20:46.793 回答
0
extension NSIndexPath {
    var prettyString: String {
        var strings = [String]()
        for position in 0..<length {
            strings.append(String(indexAtPosition(position)))
        }
        return strings.joinWithSeparator("_")
    }
}
于 2016-05-26T08:48:27.270 回答