0

これは私を夢中にさせています。

Core Data モデルに、int16_t として定義された「cardType」というフィールドがあります。

intとして定義されているUISegmentedControl.selectedSegmentIndexの設定を保持したい。この特定の UISegmentedControl は 4 つのセグメントに設定されているため、int16_t はやり過ぎです。

設定しようとしたら

segmentedControl.selectedSegmentIndex = [dataTable cardType]; 

「'int16_t *' (別名 'short *') から 'NSInteger' (別名 'int') に代入する整数変換への互換性のないポインター」というエラーが表示されます。

楽しみのために、メソッドの戻り値の前にアスタリスクを付けました。*[dataTable cardType] ですが、明らかにうまくいきませんでした。(int *)dataTable.cardType も実行しましたが、これも愚かな試みでした。コンパイラはそれを気に入りましたが、ランタイムはそれをすべて吐き出しました.

また、値を一連の NSNumber および NSInteger 操作に移動しようとしたマルチステップ コードを少し試しましたが、いずれも機能しませんでした。

私が考えたもう 1 つの考えは、データ型を NSString に変換し、文字列関数を使用してテキストと整数の間で変換することですが、それはあまりエレガントではないようです。

これは本当に単純なものであるように思えますが、私はそれを見つけるにはあまりにも無感覚です.

4

1 に答える 1

0

Core Data は、プレーンな int ではなく、@property の int へのポインターを自動生成しました。

私が変更され:

@property (nonatomic) int16_t *cardType;

@property (nonatomic) int16_t cardType;

そして、すべてが私が望んでいたように機能しています。すなわち、

セグメント化されたコントロールを保存するには

[dataTable setCardType:[cardTypePicker selectedSegmentIndex]];

segmentedControl を設定するには

cardTypePicker.selectedSegmentIndex = [dataTable cardType];

これが Xcode のバグかどうかはわかりません。

于 2013-09-27T21:37:32.647 に答える