我的服务器上有一些Java模型,但是在我的iOS应用中,我使用的是不带序列化器的JSON,因为我的服务器没有Objective-C模型生成器。

是否可以在Objective-C中集成Java模型类?

怎么样?

最佳答案

是的,您当然可以,但是您会发现“翻译”会更好。

这些是分步说明(源:http://hints.macworld.com/article.php?story=20040321163154226)。


创建一个新的基金会项目,称为“ HelloBridge”
创建一个名为“ JavaClasses”的新Pure Java Package目标
创建一个名为“ HelloBridge.java”的新Java类,并将其添加到目标
“ JavaClasses”:

public class HelloBridge {
   private String string = "Hello";

   public void setString(String string) {
      this.string = string;
   }

   public String getString() {
      return this.string;
   }

   public void printString() {
      System.out.println(this.string);
   }
}

将“ HelloBridge.java”添加到目标的“源”构建阶段
“ JavaClasses”
创建一个名为“ JavaInterfaces.h”的新空文件,并将其添加到
目标“ HelloBridge”:

// Provide Objective-C interfaces for the Java classes
// Not only good practice, it provides Code Sense
@interface java_util_Vector : NSObject
{}
- (void)add:(id)anObject;
- (id)get:(int)index;
@end

@interface HelloBridge : NSObject
{}
- (void)setString:(NSString *)string;
- (NSString *)getString;
- (void)printString;
@end

修改“ main.m”:

#import <Foundation/Foundation.h>
#import "JavaInterfaces.h"

int main (int argc, const char * argv[]) {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   // Load the Java VM
   id vm = NSJavaSetupVirtualMachine();

   // Start the Java class loader
   NSJavaClassesFromPath(nil, nil, YES, &vm);

   // Load a new instance of the java.util.Vector Java class into an Objective-C pointer
   java_util_Vector * vector = NSJavaObjectNamedInPath(@"java.util.Vector", nil);
   [vector add:@"one item!"];
   NSLog(@"item 1=%@",[vector get:0]);
   [vector release];

   // Load a new instance of our custom HelloBridge Java class into an Objective-C pointer
   HelloBridge * hello = NSJavaObjectNamedInPath(@"HelloBridge", nil);
   NSLog(@"item 1=%@",[hello getString]);
   [hello setString:@"Test"];
   NSLog(@"item 1=%@",[hello getString]);
   [hello printString];
   [hello release];

   [pool release];
   return 0;
}

从目标下拉框中选择“ JavaClasses”并构建它
从目标下拉框中选择“ HelloBridge”并构建/运行它

10-08 17:48