#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("_")
}
}