2012-12-19 48 views
9

使用MagicalRecord,我試圖獲取特定的clientNumber這是一個NSInteger(定義爲int16作爲數據類型)的記錄。隱式轉換的NSInteger錯誤

這是我的代碼,我遇到了錯誤行:

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

UPDATE:這是MR_findFirstByAtytribute的定義:

MR_findFirstByAttribute:(NSString *) withValue:(id) 

這是我得到的錯誤:

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

對於我的生活,我沒有看到什麼是錯的。 ClientInfo客戶端被定義爲

@interface ClientInfo : NSManagedObject 
+0

它說你正在嘗試使用NSInteger - 一個「標量」 - 在那裏預期一個對象指針。 –

+0

這對我來說絕對沒有意義......那麼它應該是什麼? – SpokaneDude

+0

我們不能確切地知道它應該是什麼,而沒有看到MR_findFirstAttribute方法描述,但它期待一個NSNumber,你需要使用'[NSNumber numberWithInt:clientNumber]' –

回答

18

參數類型爲withValueid(指針)。 NSInteger是標量值(不是對象),不能隱式轉換爲指針值。

這純粹是一種猜測,但創建從NSInteger一個NSNumber可能的工作:

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

那麼我該如何解決這個問題呢? – SpokaneDude

+0

@ spokane-dude:更新了答案。 – mipadi

+0

XCode 4.5現在支持字面值,並向後兼容iOS 4.3,因此使用'@(clientNumber)'看起來更清晰。 – tia

0

按照您的方法,它的期待和id的定義和你是傳遞一個NSInteger又名int