NSINDEXPATH Доступ к строке к разделу. Свойство вызывает Sigabrt?

StackOverflow https://stackoverflow.com/questions/8380321

  •  28-10-2019
  •  | 
  •  

Вопрос

Нацеливание на iOS 5.0 Я вижу Sigabrt, когда пытаюсь получить доступ к свойствам строки или раздела объекта nsindexpath в следующем коде:

NSIndexPath* path = [[NSIndexPath alloc] initWithIndex:0];
int row = path.row; //SIGABRT
int section = path.section;//SIGABRT

Этот пример предполагает использование indexpathwithindex: вместо этого http://developer.apple.com/library/mac/#samplecode/sourceview/listings/basenode_m.html#//apple_ref/doc/uid/dts100044441-basenode_m-dontlinkelementid_6

path = [NSIndexPath indexPathWithIndex:0];

Результаты остаются последовательными. У кого -нибудь есть объяснение того, почему это может произойти? Это то, что мы просто не можем работать на nsindexpath в iOS 5.0?

Заранее спасибо.

Это было полезно?

Решение

Попробуйте создать путь индекса, используя indexPathForRow:inSection:

NSIndexPath* path = [NSIndexPath indexPathForRow:0 inSection:0];

Другие советы

Единственное, о чем я могу придумать, это убедиться, что у вас UIKit.framework как один из ваших рамок. Вы можете сделать это, нажав кнопку Plus в разделе «Бинарник Link с библиотеками» в разделе «Фазы сборки» на вашей цели. Кроме того, убедитесь, что вы импортируете NSIndexPath.h В файле вы пытаетесь получить доступ к пути индекса.

Я сталкивался с этой проблемой раньше, и это решило ее. Это потому, что хотя NSIndexPath Универсален между какао и кокоатом, версия какао не имеет свойств row а также section.

Если у вас уже есть UIKit.framework, попробуйте использовать [NSIndexPath indexPathForRow:row inSection:section] вместо [NSIndexPath indexPathWithIndex:index].

Я думаю, что проблема в том, что indexpathwithindex: создает путь индекса одного узла. То же самое для initwithindex:. Свойства раздела и строки поступают от категории UitableView до класса nsindexpath. Путь индекса с одним узлом является недопустимым для использования с представлением таблицы, поскольку пути индекса, передаваемые в представления таблицы, должны содержать два индекса, указывающие раздел и строку (в соответствии с сообщением об ошибке, которое я получаю при запуска вашего кода). Следующий код создает индексный путь с двумя индексами и запускается, не бросая nsinternalinconsistencyexception:

NSUInteger x[] = {0 , 0};
NSIndexPath *path = [[NSIndexPath alloc] initWithIndexes: x length: 2];
int row = [path row];
int section = [path section];
row = path.row;
section = path.section;

Это то, что вы имели в виду под "работать на nsindexpath в iOS 5.0"?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top