1

iOS 6 アプリを iOS 7 で動作するように変換しています。これは CoreData を使用し、モデルにはいくつかのエンティティと属性が定義されています。属性の 1 つは deliveryid で、タイプは Integer 32 に設定されています。

コア データ エンティティ用に作成された NSManagedObject クラスがあり、これらは以前は XCode 5 と iOS 6 で正常に機能していました。

これらの NSManagedObject クラスをターゲット iOS 7 に持ち込むと、「'NSNumber *' をタイプ 'long' のパラメーターに送信する整数変換への互換性のないポインター」というエラーが表示されます。

deliveryid 属性については、.h ファイルで次のように定義されています。

@property (nonatomic, strong) NSNumber * deliveryid;

次に、.mファイルに次のものがあります。

NSString *strDeliveryID = [[NSNumber numberWithLong:self.deliveryid] stringValue];

文字列値に変換しようとしています。これにより、以前はコンパイル時に警告や問題が発生しませんでした。

iOS 7 でこの問題が発生する理由を解決できません。誰か助けてもらえますか?

4

2 に答える 2

4

self.deliveryidはすでにNSNumber*です。そこから新しいものを作成する理由はありませんNSNumber*。これを使って:

NSString *strDeliveryID = self.deliveryid.stringValue;

別のオプションは次のとおりです。これはばかげていて紛らわしいです。

NSString *strDeliveryID = @(self.deliveryid.longValue).stringValue;
于 2013-10-27T18:40:53.187 に答える