如何将 NSIndexPath 转换为 NSString-iOS

Posted

技术标签:

【中文标题】如何将 NSIndexPath 转换为 NSString-iOS【英文标题】:How to convert NSIndexPath to NSString-iOS 【发布时间】:2011-05-12 04:20:20 【问题描述】:

我想将NSIndexPath 转换为NSString。我该怎么做? 我必须使用这个:

- (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];   
  

【问题讨论】:

你应该如何从一组数字中得到它?我们需要更多信息,否则此问题将被关闭。 为什么要在NSString中转换? deletePath 带的参数-它是NSString。我可以简单地进行类型转换吗?我有 (NSIndex Path*)indexPath;我可以做 (NSString*)indexPath 并将它交给 deletePath。 @ughoavgfhw:请检查已编辑的问题。 一个 NSIndexPath 实际上只是一个整数数组,所以强制转换它不会有任何用处。 【参考方案1】:

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

@interface NSIndexPath (StringForCollection)

-(NSString *)stringForCollection;

@end

@implementation NSIndexPath (StringForCollection)

-(NSString *)stringForCollection

    return [NSString stringWithFormat:@"%d-%d",self.section,self.row];


@end

【讨论】:

【参考方案2】:

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

@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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:
extension NSIndexPath 
    var prettyString: String 
        var strings = [String]()
        for position in 0..<length 
            strings.append(String(indexAtPosition(position)))
        
        return strings.joinWithSeparator("_")
    

【讨论】:

以上是关于如何将 NSIndexPath 转换为 NSString-iOS的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSIndexPath 转换为 NSInteger?

将 NSString 转换为 NSIndexPath

如何将单元格的值/字符串内容转换为 nsindexpath

如何将 NSNumber 转换为 NSString

如何快速将 NSIndexPath 添加到 NSUserDefaults

将NSIndexPath传递给新视图