2012-12-19 52 views
9

MagicalRecord kullanarak, bir NSInteger (veri türü olarak int16 olarak tanımlanmıştır) olan belirli bir clientNumber ile kayıt almaya çalışıyorum.NSInteger hatasının örtük çevrimi hatası

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

GÜNCELLEME:

MR_findFirstByAttribute:(NSString *) withValue:(id) 

Bu alıyorum hatadır: Bu MR_findFirstByAtytribute tanımıdır

Bu benim hata alıyorum kod benim çizgisidir:

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

Hayatımın için, neyin yanlış olduğunu göremiyorum. ClientInfo

@interface ClientInfo : NSManagedObject 
+0

O ediyor geçiyoruz NSInteger - bir "skaler" - bir nesne işaretçisi bekleniyor nerede kullanmaya çalıştığını söyleyerek. –

+0

Bu bana hiç mantıklı gelmiyor ... o zaman ne olması gerekiyor? – SpokaneDude

+0

MR_findFirstAttribute yöntem açıklamasını görmeden tam olarak ne olduğunu söyleyemeyiz, ancak bu [NSNumber numberWithInt: clientNumber] ' –

cevap

18

withValue için parametre tipi bir id (bir işaretçi) olarak tanımlanır. NSInteger bir skaler değerdir (bir nesne değil) ve bir işaretçi değerine dolaylı olarak dönüştürülemez.

Bu tamamen bir tahmin olmakla birlikte, NSInteger bir NSNumber işe yarayabilecek yaratma:

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

Peki bunu nasıl düzeltmem gerekiyor? – SpokaneDude

+0

@ spokane-dude: Güncellenmiş yanıt. – mipadi

+0

XCode 4.5 artık literal'i destekliyor, iOS 4.3'e geriye dönük uyumluluk sayesinde '@ (clientNumber)' kullanarak daha temiz görünüyor. – tia

0
o bekliyor yöntem ve id tanımına gereğince

ve senin bunu bir NSInteger aka int