如何使用 j2objc 将 sqlite-jdbc-3.8.11.1.jar 转换为 iOS?

How to convert sqlite-jdbc-3.8.11.1.jar to iOS using j2objc?

我正在将 java 项目转换为 objective c(在 iOS 上)。

然而,当我 运行 它时,它击中了:

*** Terminating app due to uncaught exception 'JavaLangClassNotFoundException', reason: 'java.lang.ClassNotFoundException: org.sqlite.JDBC'

我已经在源路径中添加了“$CURRENT_DIR/libs/sqlite-jdbc-3.8.11.1.jar”。

我什至尝试从 bitbucket 获取源代码: https://bitbucket.org/xerial/sqlite-jdbc/commits/tag/sqlite-jdbc-3.7.2

然而,它在翻译后给我带来了很多错误:

src-sqlite-test/org/sqlite/SQLiteErrorCode.java:88: error: illegal start of expression for (SQLiteErrorCode each : )

src-sqlite-test/org/sqlite/core/CorePreparedStatement.java:118: error: ')' expected switch (1.$SwitchMap$org$sqlite$SQLiteConfig$DateClass[conn.dateClass.ordinal()]){

src-sqlite-test/org/sqlite/core/CorePreparedStatement.java:118: error: case, default, or '}' expected switch (1.$SwitchMap$org$sqlite$SQLiteConfig$DateClass[conn.dateClass.ordinal()]) {

另一种选择是使用ios 原生sqlite 库来访问数据库。

考虑切换到 SQLighter(https://github.com/vals-productions/sqlighter), which is a Java ORM,它使用 Android 和 iOS 中内置的原生 SQLite 库。由于原生平台支持,它体积小,速度快,而且通常更容易将 Java 代码写入 ORM,需要更少的样板代码。

J2ObjC 不支持 JDBC,因为它不是移动应用程序(缓慢、笨重)的糟糕选择,而且数据库供应商不提供 iOS 版本的驱动程序。理论上,您也可以通过移植 JDBC 来移植 Xerial,但这是一项很可能在您的应用程序中执行不佳的任务。 j2objc 团队有一句话适用于此:"just because something can be translated doesn't mean it should be." :-)