如何将 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?