2

iOS 5.0 をターゲットにする 次のコードで NSIndexPath オブジェクトの行またはセクションのプロパティにアクセスしようとすると、SIGABRT が表示されます。

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

この例では、indexPathWithIndex を使用することを提案しています。

path = [NSIndexPath indexPathWithIndex:0];

結果は一貫したままです。なぜこれが起こるのか、誰かに説明がありますか? iOS 5.0 で NSIndexPath を操作できないということですか?

ありがとうございます。

4

3 に答える 3

3

を使用してインデックスパスを作成してみてくださいindexPathForRow:inSection:

NSIndexPath* path = [NSIndexPath indexPathForRow:0 inSection:0];
于 2011-12-05T02:31:23.480 に答える
2

私が考えることができる唯一のことはUIKit.framework、フレームワークの1つとして持っていることを確認することです. これを行うには、ターゲットの [ビルド フェーズ] の下にある [ライブラリとバイナリをリンクする] セクションのプラス ボタンを押します。NSIndexPath.hまた、インデックス パスにアクセスしようとしているファイルをインポートしていることを確認してください。

以前にこの問題に遭遇しましたが、これで解決しました。これNSIndexPathは、Cocoa と CocoaTouch の間で共通ですが、Cocoa バージョンにはプロパティrowsection.

を既にお持ちの場合は、代わりにUIKit.framework使用してみてください。[NSIndexPath indexPathForRow:row inSection:section][NSIndexPath indexPathWithIndex:index]

于 2011-12-05T02:35:18.750 に答える
0

問題は、 indexPathWithIndex: が1ノードのインデックスパスを作成することだと思います。initWithIndex: についても同様です。セクションと行のプロパティは、UITableView カテゴリから NSIndexPath クラスに由来します。テーブル ビューに渡されるインデックス パスには、セクションと行を指定する 2 つのインデックスが含まれている必要があるため、1 ノード インデックス パスはテーブル ビューでの使用には無効です (コードを実行したときに表示されるエラー メッセージによると)。次のコードは、2 つのインデックスを持つインデックス パスを作成し、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;

これが「iOS 5.0 で NSIndexPath を操作する」という意味ですか?

于 2011-12-05T02:57:02.110 に答える