2013-10-17 19 views
1

我使用java 2 objective-c convector來創建iOS應用程序。這個對流器:http://code.google.com/p/j2objc/Java 2 Objective-C NSArray

這是我第一次使用objective-c。所以我不能解決以下問題:

本來我已經得到了這條線。

static final short[] ar = new short[]{(short)0, (short)0, (short)1,(short)0}; 

之後Java2ObjC我得到了這個。編譯器給我一個錯誤在這裏(短,int,雙不能轉換爲id):

NSArray * const ar = [NSArray arrayWithObjects:(short)0, (short)0, (short)1, (short)0] 

雙值的同樣的問題。

什麼是正確的方式來初始化最終靜態常量數組?

我一直使用在Windows中使用轉換器。現在我發現那是錯誤的。只有在Mac系統使用j2ObjC

+0

你爲什麼不去學習Objective-C?它比一些轉換器更好。 – Houssni

回答

3

的問題是,一個NSArray只能容納NSObject或派生類:

NSArray * const ar = [NSArray arrayWithObjects:[NSNumber numberWithShort:0], [NSNumber numberWithShort:0], [NSNumber numberWithShort:1], [NSNumber numberWithShort:0], nil]; 

或用新的速記符號:

NSArray * const ar = @[[NSNumber numberWithShort:0], [NSNumber numberWithShort:0], [NSNumber numberWithShort:1], [NSNumber numberWithShort:0]]; 

或者使用一個普通的C array:

short const ar[4] = {0,0,1,0}; 
+0

我認爲這是最有用的答案。謝謝。是否有可能在Objective-C中使用簡單的C代碼而沒有額外的插件? – Vyacheslav

+0

Objective-C只是C和一些額外的類,你可以誤C和Objective-C多得你想要的。 – rckoenes

+0

+1對於'NSArray arrayWithObjects'簡寫符號,直到現在才知道:) – Houssni

1

這是在目標中添加多個對象的簡短示例-c

NSArray *consArr=[[NSArray alloc]initWithObjects:[NSNumber numberWithShort:0], 
    [NSNumber numberWithDouble:0], [NSNumber numberWithInt:1],nil]; 
0

使用方法「arrayWithObjects」初始化數組。您應該只添加對象,這樣

NSNumber * number1 = [NSNumber alloc] initWithShort:0]; 
NSNumber * number2 = [NSNumber alloc] initWithShort:0]; 

然後,

NSArray * const ar = [NSArray arrayWithObjects:number1,number2, nil]; 

應該工作