2012-12-18 22 views
0

我想弄清楚如何設置與其他類的變量數組。我有名爲myObject的NSObject類,其中我聲明瞭變量myInt和mySecondInt爲int類型。我不能設置數組與我的NSObject類的變量

於是我進口myObject的,並試圖建立一個這樣的數組:

MyObject *object = [[MyObject alloc]init]; 

    object.myInt = 50; 
    object.mySecondInt = 15; 

    object.array = [[NSArray alloc]initWithObjects:object.mySecondInt,object.myInt, nil]; 

然後我得到了一個錯誤:的'int''id'隱式轉換是不允許用圓弧

請幫我解決這個,我正在學習Objective-C,我想知道如何用其他類的變量來管理。

+0

看到我的答案,這絕對解決您的問題。 – Girish

回答

0

NSArray持有的對象,敏和mySecondInt是int類型,不一個東西。您可以將其轉換爲NSNumberNSString。如果您將其轉換爲NSString,則在使用它時請訪問它的intValue。 另一種方法是將整個對象添加到數組中&然後從數組中檢索對象&然後訪問它的實體,這是更好的解決方案,而不是添加單獨的實體。

+0

謝謝你的Girish,這是有幫助的 –

2

對於原語,您需要一個包裝類來允許它們存儲爲對象。

Ex。

[[NSArray alloc]initWithObjects:[NSNumber numberWithInt:object.mySecondInt],[NSNumber numberWithInt:object.myInt], nil]; 

NSArray存儲id「s,這是通用的指針(對象引用)。原語不屬於這個類別,Objective-C不支持自動裝箱。

+0

謝謝約翰,現在我明白了,我只是想知道爲什麼我不能像這樣聲明int:@property(nonatomic,assign)NSNumber myInt;它警告我錯誤.. –

+0

@EvgeniyKleban你的意思是NSNumber * myInt? – John

+0

是的,當我這樣做,我得到更多的錯誤,例如我不能像這樣設置 - object.myInt = 50;當聲明爲NSNumber而不是int –

2

NSArray只能容納對象(NSObject的實例或其子類),但myInt和mySecondInt是C的int值,而不是對象。

你可以這樣做:

object.array = [[NSArray alloc]initWithObjects:[NSNumber numberWithInt:object.mySecondInt],[NSNumber numberWithInt:object.myInt], nil]; 

或者,如果你使用新的Xcode,你可以簡單地這樣寫:

object.array = @[@50,@15]; 
+0

非常感謝你onevcat –

相關問題