1

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 を型に解決できません」というエラーが表示されます。誰が理由を知っていますか?

ありがとう

4

1 に答える 1

1

j2objc は Java コンパイラ (フロントエンドとして Eclipse の JDT を使用) であり、javac と同じパス フラグを必要とします。「クラスを型に解決できません」は Java コンパイラ エラーであるため、フラグが正しくない可能性があり-sourcepathます。これは、Java コンパイラが他の Java ソース ファイルで型を見つける方法であるためです。

j2objc コマンド ラインで正しいソースとクラス パスを確認する簡単な方法は、javac コマンドで同じフラグを使用し、コンパイル エラーを修正してから、j2objc コマンドで同じパスを使用することです。Xcode が失敗しているコマンドを確認するには、ビルド ルールの j2objc コマンドの前に「echo」を配置し、アプリをビルドしてから、「Run shell script build rule on ...」ログ エントリを展開してコマンドを確認します。 .

コマンド ログの 2 行目には「cd」コマンドがあり、ターミナル ウィンドウを開いてその行を実行すると、Xcode が使用する作業ディレクトリに移動します。javac -sourcepath ../../j2ObjcDemon_SharedLib/src/mainいずれかまたは両方の Java ソースへのタイプとパス。javac がこれらのファイルをコンパイルできるようになるまでソース パスを修正してから、j2objc ビルド ルールで固定パスを使用します。

于 2016-05-27T17:06:46.517 に答える