【问题标题】:Java 2 Objective-C NSArrayJava 2 Objective-C NSArray
【发布时间】:2013-10-17 09:53:02
【问题描述】:

我正在使用 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

【问题讨论】:

  • 你为什么不去学习Objective-c?它比某些转换器好得多。

标签: java android ios objective-c


【解决方案1】:

问题在于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};

【讨论】:

  • 我认为这是最有用的答案。谢谢。是否可以在 Objective-C 中只使用纯 C 代码而无需额外的插件?
  • Objective-C 只是带有一些额外类的 C,您可以随意误用 C 和 Objective-C。
  • +1 对于NSArray arrayWithObjects 的简写符号,直到现在才知道 :)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      那么,

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

      应该工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-08
        • 1970-01-01
        • 2023-03-29
        • 2011-01-20
        • 2015-08-05
        • 2011-08-29
        相关资源
        最近更新 更多