2012-02-05 7 views
2

この質問の回答はおそらく単純ですが、現在私は困惑しており、助けが歓迎されるでしょう。エラーをNSAlertPanelとARCでcontextInfoを使用してデータを渡す

私は、コンテキストメニューをテーブルビューに添付しました。メニューオプションの1つは、テーブルビュー内の要素を削除することです。 NSAlertを使用してモーダルウィンドウをポップして削除を確認しています。私はテーブルビューからアラートセレクタに値を渡したいので、私は削除のために使用するいくつかの参照があります。 はここに警告文字列です:

[alert beginSheetModalForWindow:_window 
     modalDelegate:self 
     didEndSelector:@selector(deleteAlert:code:context:) 
     contextInfo:s]; 

私は警告を受けるcontextInfoとしてオブジェクトを渡すためにしようと、いつでも。警告:セマンティクス問題: 'NSInteger'(別名 'long')を 'void *'型のパラメータに送信する互換性のない整数からポインタへの変換 エラー:自動参照カウント問題:Objective-Cポインタの 'void *'への暗黙的な変換は、ARCでは禁止されています。私も運がない辞書を試しました。

私はthis:contextInfo:@ "some info"のような文字列を渡すと、エラーは発生せず、セレクタで実際に見ることができます。もちろん私のニーズには役に立たない。

したがって、削除セレクタで使用できるように、テーブルの行情報をアラートに渡すにはどうすればよいですか。

答えて

3

あなたが行インデックスを渡したい場合は、あなたがNSNumberインスタンスでそれをラップすることができます:あなたのクイックヘルプのための

[alert beginSheetModalForWindow:_window modalDelegate:self didEndSelector:@selector(deleteAlert:code:context:) contextInfo:(__bridge void *)[NSNumber numberWithInteger:row]]; 
+0

おかげで、私はまだ同じエラーエラーを取得:自動参照カウントの問題:の暗黙的な変換を'ボイド*' にObjective-Cのポインタは、ARCと禁止さ [アラートbeginSheetModalForWindow:_window modalDelegate:自己 didEndSelector:@selector(deleteAlert:コード:コンテキスト:) contextInfo:[のNSNumber numberWithInteger:行]。 – CocoaEv

+0

__ブリッジキャストの重要な部分を忘れました。 – sbooth

+0

ありがとうございます。 __bridgeキャストは機能しますが、現在NSNumberを整数にアンラッピングする問題があります。 contextInfoにはtargetRowというラベルが付けられています。このコードは、無効な受信者タイプvoidで失敗します。 'code' NSInteger affectedRow = [targetRow integerValue]; 'code' は、今私はので、私は、アレイ上の表情でそれを使用することができますアウト後列の変数を取得したい: ' code' [printerNames objectAtIndex:affectedRow] 'code' あなたの親切に感謝助けて。 – CocoaEv

関連する問題