Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android J2Objc、Protobuf nano和Swift_Android_Protocol Buffers_J2objc - Fatal编程技术网

Android J2Objc、Protobuf nano和Swift

Android J2Objc、Protobuf nano和Swift,android,protocol-buffers,j2objc,Android,Protocol Buffers,J2objc,我将Java类转换为Objective C(使用摇篮插件的J2Objc)。简单的Android应用程序和单元测试运行良好。同样简单的Objective C iOS应用程序也可以完美运行。然而,当我试图在Swift项目中编写类似的代码时,我无法访问实例变量、查找方法等。这对我来说是比较新的,所以我可能缺少一些基本的东西 以下是目标C中的代码。工作非常完美: SHRRefreshAppointments *mTest = [[SHRRefreshAppointments alloc] initWit

我将Java类转换为Objective C(使用摇篮插件的J2Objc)。简单的Android应用程序和单元测试运行良好。同样简单的Objective C iOS应用程序也可以完美运行。然而,当我试图在Swift项目中编写类似的代码时,我无法访问实例变量、查找方法等。这对我来说是比较新的,所以我可能缺少一些基本的东西

以下是目标C中的代码。工作非常完美:

SHRRefreshAppointments *mTest = [[SHRRefreshAppointments alloc] initWithId:nil withBoolean:true];
[mTest run];
SHREventListResp *mResp = [SHREventListResp parseFromWithByteArray:mTest->mResponseData_];
NSLog(@"%@", mResp.description);
Swift中的代码相同-我找不到实例变量mResponseData,该变量在目标C中可用:

let mTest : SHRRefreshAppointments = SHRRefreshAppointments(id: nil, withBoolean: true)
mTest.run()
var mResp : SHREventListResp = SHREventListResp.parseFromWithByteArray(mTest.)
以下是桥接标头的内容:

#include "JreEmulation.h"
#include "J2ObjC_header.h"

#import "com/gcatconsult/shared/remote/AppConstants.h"
#import "com/gcatconsult/shared/remote/AppUtils.h"
#import "com/gcatconsult/shared/messages/nano/Resp.h"
#import "com/gcatconsult/shared/messages/nano//Req.h"
#import "com/gcatconsult/shared/messages/nano/EventListResp.h"
#import "com/gcatconsult/shared/messages/nano/EventListReq.h"
#import "com/gcatconsult/shared/messages/nano/Event.h"
#import "com/gcatconsult/shared/remote/RefreshAppointments.h"
#import "com/gcatconsult/shared/remote/NetworkBase.h"
ShrreshAppoints标题:

//
//  Generated by the J2ObjC translator.  DO NOT EDIT!
//  source: /Users/gabrielchoza/AndroidStudioProjects/GcatMobile/shared/src/main/java/com/gcatconsult/shared/remote/RefreshAppointments.java
//

#include "J2ObjC_header.h"

#pragma push_macro("INCLUDE_ALL_ComGcatconsultSharedRemoteRefreshAppointments")
#ifdef RESTRICT_ComGcatconsultSharedRemoteRefreshAppointments
#define INCLUDE_ALL_ComGcatconsultSharedRemoteRefreshAppointments 0
#else
#define INCLUDE_ALL_ComGcatconsultSharedRemoteRefreshAppointments 1
#endif
#undef RESTRICT_ComGcatconsultSharedRemoteRefreshAppointments

#if !defined (SHRRefreshAppointments_) && (INCLUDE_ALL_ComGcatconsultSharedRemoteRefreshAppointments ||     defined(INCLUDE_SHRRefreshAppointments))
#define SHRRefreshAppointments_

#define RESTRICT_ComGcatconsultSharedRemoteNetworkBase 1
#define INCLUDE_SHRNetworkBase 1
#include "com/gcatconsult/shared/remote/NetworkBase.h"

#define RESTRICT_JavaLangRunnable 1
#define INCLUDE_JavaLangRunnable 1
#include "java/lang/Runnable.h"

@interface SHRRefreshAppointments : SHRNetworkBase < JavaLangRunnable >

#pragma mark Public

- (instancetype)initWithId:(id)requestData
           withBoolean:(jboolean)asyncCall;

#pragma mark Protected

- (void)postProcessExcecute;

@end

J2OBJC_EMPTY_STATIC_INIT(SHRRefreshAppointments)

FOUNDATION_EXPORT void SHRRefreshAppointments_initWithId_withBoolean_(SHRRefreshAppointments *self, id requestData, jboolean asyncCall);

FOUNDATION_EXPORT SHRRefreshAppointments *new_SHRRefreshAppointments_initWithId_withBoolean_(id requestData, jboolean asyncCall) NS_RETURNS_RETAINED;

FOUNDATION_EXPORT SHRRefreshAppointments *create_SHRRefreshAppointments_initWithId_withBoolean_(id requestData, jboolean asyncCall);

J2OBJC_TYPE_LITERAL_HEADER(SHRRefreshAppointments)

@compatibility_alias ComGcatconsultSharedRemoteRefreshAppointments SHRRefreshAppointments;

#endif

#pragma pop_macro("INCLUDE_ALL_ComGcatconsultSharedRemoteRefreshAppointments")
//
//由J2ObjC转换器生成。不要编辑!
//来源:/Users/gabrielchoza/AndroidStudioProjects/GcatMobile/shared/src/main/java/com/gcatconsult/shared/remote/refreshAppoinces.java
//
#包括“J2ObjC_header.h”
#pragma push_宏(“包括所有ComgcatConsultsSharedRemotereFresh约会”)
#ifdef限制\u ComgcatConsults共享删除约会
#定义INCLUDE_ALL_ComgcatConsults共享删除约会0
#否则
#定义INCLUDE_ALL_ComgcatConsults共享删除约会1
#恩迪夫
#undef RESTRICT_ComgcatConsults共享删除约会
#如果!已定义(包括所有公司顾问共享RemotereFreshAppoints)和&(包括所有公司顾问共享RemotereFreshAppoints)
#定义新的约会_
#定义RESTRICT_ComgcatConsultsSharedRemotineWorkbase 1
#定义包含网络基础1
#包括“com/gcatconsult/shared/remote/NetworkBase.h”
#定义RESTRICT_JavaLangRunnable 1
#定义INCLUDE_JavaLangRunnable 1
#包括“java/lang/Runnable.h”
@接口:SHRNetworkBase
#布拉格公共标志
-(instancetype)initWithId:(id)requestData
withBoolean:(jboolean)异步调用;
#pragma标记受保护
-(无效)后处理异常;
@结束
J2OBJC_EMPTY_STATIC_INIT(SHR)
基金会\导出void shrefreshAppointments\ initWithId\ uwithboolean\(shrefreshAppointments*self、id requestData、jboolean异步调用);
基金会\u导出SHRRefreshAppointments*新建\u SHRRefreshAppointments\u initWithId\u withBoolean\u(id requestData,jboolean asyncall)NS\u返回\u reserved;
基金会\u导出shrefreshAppointments*创建\u shrefreshAppoints\u initWithId\u withBoolean\u(id requestData,jboolean异步调用);
J2OBJC_类型_文字_头(SHR)
@兼容性\别名ComgcatConsultsSharedRemotereFreshAppointment和RefreshAppointment;
#恩迪夫
#pragma pop_宏(“包括所有ComgcatConsultsSharedRemotereFresh约会”)
SHRNetworkBase超类:

//
  //  Generated by the J2ObjC translator.  DO NOT EDIT!
  //  source: /Users/gabrielchoza/AndroidStudioProjects/GcatMobile/shared/src/main/java/com/gcatconsult/shared/remote/NetworkBase.java
  //

  #include "J2ObjC_header.h"

  #pragma push_macro("INCLUDE_ALL_ComGcatconsultSharedRemoteNetworkBase")
  #ifdef RESTRICT_ComGcatconsultSharedRemoteNetworkBase
  #define INCLUDE_ALL_ComGcatconsultSharedRemoteNetworkBase 0
  #else
  #define INCLUDE_ALL_ComGcatconsultSharedRemoteNetworkBase 1
  #endif
  #undef RESTRICT_ComGcatconsultSharedRemoteNetworkBase

  #if !defined (SHRNetworkBase_) && (INCLUDE_ALL_ComGcatconsultSharedRemoteNetworkBase || defined(INCLUDE_SHRNetworkBase))
  #define SHRNetworkBase_

  #define RESTRICT_JavaLangRunnable 1
  #define INCLUDE_JavaLangRunnable 1
  #include "java/lang/Runnable.h"

  @class IOSByteArray;
  @class JavaLangInteger;

  @interface SHRNetworkBase : NSObject < JavaLangRunnable > {
   @public
    NSString *mGetPatientPath_;
    NSString *mStringURL_;
    IOSByteArray *mRequestData_;
    IOSByteArray *mResponseData_;
    jboolean mShouldCompress_;
    jint mCurrentCall_;
    jboolean mAsyncCall_;
  }

  #pragma mark Public

  - (instancetype)initWithNSString:(NSString *)callPath
                       withBoolean:(jboolean)shouldCompress
               withJavaLangInteger:(JavaLangInteger *)currentCall
                       withBoolean:(jboolean)async;

  - (void)run;

  #pragma mark Protected

  - (void)postProcessExcecute;

  - (id)sendAsyncServerRequestWithNSString:(NSString *)stringURL
                                    withId:(id)requestData
                               withBoolean:(jboolean)shouldCompress
                       withJavaLangInteger:(JavaLangInteger *)currentCall;

  @end

  J2OBJC_EMPTY_STATIC_INIT(SHRNetworkBase)

  J2OBJC_FIELD_SETTER(SHRNetworkBase, mGetPatientPath_, NSString *)
  J2OBJC_FIELD_SETTER(SHRNetworkBase, mStringURL_, NSString *)
  J2OBJC_FIELD_SETTER(SHRNetworkBase, mRequestData_, IOSByteArray *)
  J2OBJC_FIELD_SETTER(SHRNetworkBase, mResponseData_, IOSByteArray *)

  FOUNDATION_EXPORT void SHRNetworkBase_initWithNSString_withBoolean_withJavaLangInteger_withBoolean_(SHRNetworkBase *self, NSString *callPath, jboolean shouldCompress, JavaLangInteger *currentCall, jboolean async);

  FOUNDATION_EXPORT SHRNetworkBase *new_SHRNetworkBase_initWithNSString_withBoolean_withJavaLangInteger_withBoolean_(NSString *callPath, jboolean shouldCompress, JavaLangInteger *currentCall, jboolean async) NS_RETURNS_RETAINED;

  FOUNDATION_EXPORT SHRNetworkBase *create_SHRNetworkBase_initWithNSString_withBoolean_withJavaLangInteger_withBoolean_(NSString *callPath, jboolean shouldCompress, JavaLangInteger *currentCall, jboolean async);

  J2OBJC_TYPE_LITERAL_HEADER(SHRNetworkBase)

  @compatibility_alias ComGcatconsultSharedRemoteNetworkBase SHRNetworkBase;

  #endif

  #pragma pop_macro("INCLUDE_ALL_ComGcatconsultSharedRemoteNetworkBase")
//
//由J2ObjC转换器生成。不要编辑!
//来源:/Users/gabrielchoza/AndroidStudioProjects/GcatMobile/shared/src/main/java/com/gcatconsult/shared/remote/NetworkBase.java
//
#包括“J2ObjC_header.h”
#pragma push_宏(“包括所有ComgcatConsultsSharedRemotineWorkbase”)
#ifdef RESTRICT_ComgcatConsults共享删除工作库
#定义INCLUDE_ALL_ComgcatConsultsSharedRemotene工作库0
#否则
#定义INCLUDE_ALL_ComgcatConsultsSharedRemotineWorkbase 1
#恩迪夫
#undef RESTRICT_ComgcatConsults共享删除工作库
#如果!已定义(SHRNetworkBase)&(包括所有公司咨询共享的远程工作库)已定义(包括SHRNetworkBase))
#定义SHRNetworkBase_
#定义RESTRICT_JavaLangRunnable 1
#定义INCLUDE_JavaLangRunnable 1
#包括“java/lang/Runnable.h”
@类IOSByteArray;
@类JavaLangInteger;
@接口SHRNetworkBase:NSObject{
@公开的
NSString*mGetPatientPath;
NSString*mStringURL;
IOSByteArray*mRequestData;
IOSByteArray*mResponseData_2;;
jboolean mShouldCompress;
jint McCurrentCall;
jboolean mAsyncCall;
}
#布拉格公共标志
-(instancetype)initWithNSString:(NSString*)调用路径
withBoolean:(jboolean)应压缩
withJavaLangInteger:(JavaLangInteger*)当前调用
withBoolean:(jboolean)异步;
-(无效)运行;
#pragma标记受保护
-(无效)后处理异常;
-(id)sendAsyncServerRequestWithNSString:(NSString*)stringURL
withId:(id)请求数据
withBoolean:(jboolean)应压缩
withJavaLangInteger:(JavaLangInteger*)当前调用;
@结束
J2OBJC_EMPTY_STATIC_INIT(SHRNetworkBase)
J2OBJC_字段设置器(SHRNetworkBase、mGetPatientPath_uu2;、NSString*)
J2OBJC_字段设置器(SHRNetworkBase、mStringURL_、NSString*)
J2OBJC_字段设置器(SHRNetworkBase、mRequestData_、IOSByteArray*)
J2OBJC_字段设置器(SHRNetworkBase、mResponseData_、IOSByteArray*)
基础\u导出无效SHRNetworkBase\u initWithNSString\u withBoolean\u withJavaLangInteger\u withBoolean\u(SHRNetworkBase*self、NSString*callPath、jboolean shoulldcompress、JavaLangInteger*currentCall、jboolean async);
基础\u导出SHRNetworkBase*新建\u SHRNetworkBase\u initWithNSString\u withBoolean\u withJavaLangInteger\u withBoolean\u(NSString*callPath,jboolean shouldCompress,JavaLangInteger*currentCall,jboolean async)NS\u返回\u reserved;
基础\u导出SHRNetworkBase*创建\u SHRNetworkBase\u initWithNSString\u withBoolean\u withJavaLangInteger\u withBoolean\u(NSString*callPath,jboolean shouldCompress,JavaLangInteger*currentCall,jboolean async);
J2OBJC_类型_文字_头(SHRNetworkBase)
@兼容性\别名ComgcatConsultsSharedRemotineWorkbase SHRNetworkBase;
#恩迪夫
#pragma pop_宏(“包括所有ComgcatConsultsSharedRemoteneWorkbase”)

任何帮助都将不胜感激。

我有限的理解是Swift将Objective C属性作为字段导入,而不是字段本身。因此,您需要mResponseData的访问器方法

好消息是j2objc有一个,您可以将其添加到mResponseDate字段,以便在转换过程中生成等效的Objective C属性。该财产应