1

我正在使用 java 2 objective-c convector 来创建 iOS 应用程序。这个对流器:http ://code.google.com/p/j2objc/

这是我第一次使用objective-c。所以我无法解决以下问题:

原来我有这条线。

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

在 Java2ObjC 之后我得到了这个。编译器在这里给了我一个错误(short, int, double can't convert to id):

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

双值的同样问题。

用值初始化最终静态常量数组的正确方法是什么?

我已经在 Windows 中使用过转换器。现在我发现这是错误的。仅在 MacO 中使用 j2ObjC

4

4 回答 4

2

问题是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 数组:

short const ar[4] = {0,0,1,0};
于 2013-10-17T09:59:55.247 回答
2

您没有使用 j2objc,您使用的是https://code.google.com/p/java2objc/。完全独立的项目,不幸的是名称相似。

请更新您的问题以引用正确的项目。

于 2013-10-17T19:14:20.447 回答
1

这是在objective-c中添加多个对象的简短示例

    NSArray *consArr=[[NSArray alloc]initWithObjects:[NSNumber numberWithShort:0], 
   [NSNumber numberWithDouble:0], [NSNumber numberWithInt:1],nil];
于 2013-10-17T10:02:48.243 回答
0

您使用“arrayWithObjects”方法初始化数组。你应该只添加对象,像这样

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

然后,

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

应该管用

于 2013-10-17T10:05:24.823 回答