Как преобразовать NSIndexPath в NSString-iOS

#ios #nsstring #nsindexpath

#iOS #nsstring #nsindexpath

Вопрос:

Я хочу преобразовать 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];   
}  
  

Комментарии:

1. Как вы должны получить это из набора чисел? Нам понадобится дополнительная информация, или этот вопрос будет закрыт.

2. почему вы хотите преобразовать его в NSString?

3. параметр, который принимает deletePath — это NSString. Могу ли я просто ввести его? есть ли у меня (NSIndex Path *)indexPath; могу ли я сделать (NSString *)indexPath и передать его в deletePath.

4. NSIndexPath — это фактически просто массив целых чисел, поэтому его приведение не принесет ничего полезного.

5. хорошо. Что мне делать? Мне нужно преобразовать информацию в NSString

Ответ №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("_")
    }
}