NSINDEXPATH Доступ к строке к разделу. Свойство вызывает Sigabrt?
-
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"?