Как использовать enum в j2Objc

Я определяю перечисление с именем SexType и хочу использовать его следующим образом:

public class People {
    //@Property("copy, nonatomic") protected String location;
   // @Property("copy, nonatomic") protected SexType sex;
   public String name;
   public SexType sex;
   public People(String name){
     this.name = name;
  }

  public String say(String text){
        return this.name + " say:" + text;
  }

public void setName(String name){
    this.name = name;
}

}

Это работает нормально на стороне Java, но это не удалось при переводе в objC и ошибка "SexType не может быть разрешен для типа". Кто знает причину?

Спасибо

1 ответ

Решение

j2objc - это компилятор Java (он использует JDT Eclipse в качестве внешнего интерфейса) и требует тех же флагов пути, что и javac. Так как "класс не может быть преобразован в тип" является ошибкой компилятора Java, это означает, что вполне вероятно, что -sourcepath флаг указан неверно, поскольку компиляторы Java находят типы в других исходных файлах Java.

Быстрый способ проверить правильность пути к источнику и классу в командной строке j2objc - это использовать те же флаги в команде javac, исправить все ошибки компиляции, а затем использовать те же пути в команде j2objc. Чтобы увидеть, с какой командой Xcode терпит неудачу, поместите "echo " перед командой j2objc в ее правиле сборки, соберите приложение, а затем разверните запись журнала "Run build script script on ...", чтобы увидеть команду,

Во второй строке журнала команд есть команда "cd ", откройте окно терминала и запустите эту строку, чтобы вы оказались в рабочем каталоге, который использует XCode. Тип javac -sourcepath ../../j2ObjcDemon_SharedLib/src/main и путь к одному или обоим источникам Java. Исправьте исходный путь до тех пор, пока javac не сможет скомпилировать эти файлы, затем используйте фиксированный путь в правиле сборки j2objc.

Другие вопросы по тегам