Ric*_*cky 6 objective-c gson ios swift j2objc
我是iOS的新手,从Android开发转向.
我们有一个Android应用程序,它有几个库,我们使用J2ObjC转换为Objective C.
我已经逐渐将这些图书馆带到了现在,所以很好.
但是,在翻译谷歌的GSON库后,我遇到了一个问题,如果我尝试使用翻译的方法,toJsonWithId我会遇到问题:
let gson = ComGoogleGsonGson()
let swiftTest = GsonSwiftTest()
swiftTest.name = "Ricky"
print(gson.toJsonWithId(swiftTest))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
libc ++ abi.dylib:以JavaLangAssertionError类型的未捕获异常终止
进一步显示:
由于未捕获的异常'JavaLangAssertionError'而终止应用程序,原因:'未知的Java类型编码'
我的Swift课程是:
import Foundation
@objc
public class GsonSwiftTest : NSObject {
var name:String?
}
Run Code Online (Sandbox Code Playgroud)
如果我在我的Swift项目中使用Objective C类,将它添加到桥接头并使用Objective C类它可以正常工作.
我相信这是我的一个误解,但我找不到为什么这不起作用的答案.检查J2ObjC源代码显示无法找到类的类型时引发错误.
如果有人可以帮助解释这个问题的原因,我们将不胜感激.
谢谢!
小智 4
有一种更简单的方法来序列化 Swift 实例:直接使用 Foundation 类 NSJSONSerialization。这是相关的博客文章:JSON Serialization in Swift。
在 Swift 中测试失败的原因是并非所有 Swift 类都扩展 NSObject,j2objc 映射到 java.lang.Object。所有 Java 序列化框架都假设/要求所有类都扩展 Object,就像在 Java 中一样。
对于跨平台 API,我建议创建一个简单的序列化/反序列化接口,然后使用 GSON 在 Android 上实现一次,并在本机上使用 NSJSONSerialization 实现一次。Swift 正在快速发展,因此如果有更好的序列化机制可用,您的项目可以轻松利用它,而不会影响 Android 端口。
| 归档时间: |
|
| 查看次数: |
6101 次 |
| 最近记录: |