2012-12-19 20 views
9

Utilizzando MagicalRecord, sto cercando di ottenere il record con un particolare numero di client che è un NSInteger (definito come int16 come tipo di dati).Conversione implicita di NSInteger error

Questa è la mia linea di codice in cui sto ottenendo l'errore:

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

AGGIORNAMENTO: Questa è la definizione di MR_findFirstByAtytribute:

MR_findFirstByAttribute:(NSString *) withValue:(id) 

Questo è l'errore che sto ottenendo:

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

Per la vita di me, non vedo cosa c'è che non va. ClientInfo è definito come

@interface ClientInfo : NSManagedObject 
+0

E ' dicendo che stai cercando di usare NSInteger - uno "scalare" - dove è previsto un puntatore all'oggetto. –

+0

Questo non ha assolutamente senso per me ... allora cosa dovrebbe essere? – SpokaneDude

+0

Non possiamo dire esattamente cosa dovrebbe essere senza vedere la descrizione del metodo MR_findFirstAttribute, ma si aspetta un NSNumber che è necessario usare '[NSNumber numberWithInt: clientNumber]' –

risposta

18

Il tipo parametro withValue è un id (un puntatore). NSInteger è un valore scalare (non un oggetto) e non può essere convertito implicitamente in un valore di puntatore.

Questo è puramente una congettura, ma la creazione di un NSNumber dal NSInteger potrebbe funzionare:

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

Quindi, come posso risolvere questo problema? – SpokaneDude

+0

@ spokane-dude: risposta aggiornata. – mipadi

+0

XCode 4.5 ora supporta letterale, con compatibilità a ritroso per iOS 4.3, quindi l'utilizzo di '@ (clientNumber)' sembra più pulito. – tia

0

Secondo la vostra definizione di metodo, aspetta e id e il vostro stanno passando un NSInteger aka int

Problemi correlati