web-dev-qa-db-ja.com

NSIntegerエラーの暗黙的な変換

MagicalRecordを使用して、NSInteger(データ型としてint16として定義)である特定のclientNumberのレコードを取得しようとしています。

これは、エラーが発生するコード行です。

ClientInfo *clientSelected = [ClientInfo MR_findFirstByAttribute:@"aClientNumber" withValue: clientNumber inContext:localContext];

更新:これはMR_findFirstByAtytributeの定義です。

MR_findFirstByAttribute:(NSString *) withValue:(id)

これは私が得ているエラーです:

Implicit conversion of NSInteger (aka int) is disallowed with ARC

私の人生では、何が悪いのかわかりません。 ClientInfoは次のように定義されます

@interface ClientInfo : NSManagedObject
17
SpokaneDude

withValueのパラメーター型はid(ポインター)です。 NSIntegerは(オブジェクトではなく)スカラー値であり、暗黙的にポインター値に変換することはできません。

これはあくまで推測ですが、NSNumberからNSIntegerを作成するとうまくいく場合があります。

NSNumber *val = [NSNumber numberWithInteger:clienNumber]
ClientInfo *clientSelected = [ClientInfo MR_findFirstByAttribute:@"aClientNumber" withValue:val inContext:localContext];
27
mipadi

メソッドの定義によると、それは期待しており、idNSInteger別名int

0