我打算将一个Android应用程序移植到IOS(ipad等...),在谷歌研究期间我找到了j2objc。关于j2objc有很多讨论,我无法弄清楚它是如何工作的以及可能的。 (我知道,从头开始移植应用程序可能是最好的,然后相信一个神奇的转换器,它可以完成这项工作。但我也想看看这个:-))
我喜欢在陈列柜上了解它是如何运作的。 (抽象层面)
转换器是否会帮助/解决以下情况?
我有javacode访问SQLite数据库并将数据加载到ArrayList JavaClass实例(Tasks.java): - Procedure loaddata(); (loader.java)
ArrayList<Task> alTask=new ArrayList<Task>();
Cursor c = sqlitedatabase.rawQuery(sSQL, null);
c.moveToFirst();
while (!c.isAfterLast()) {
Task t=new Task();
t.setname(c.getString(0));
..
..
alTask.add(t);
}
return alTask;
类任务(Task.java)
班级任务{ String sName =&#34;&#34 ;; .. .. ArrayList alSubtasks; }
如果我想在IOS应用程序列表中显示任务,我可以转换我的java类,以某种方式将它们绑定到我的IOS应用程序中,并使用转换后的loaddata()来使用新的数组(IOS语法) )在IOS UI-List中显示它? (从头开始,IOS中的UI-List I woulc代码。)
答案 0 :(得分:2)
你有一般的想法,但不幸的是,SQLite是一个很糟糕的例子,因为你使用的是android.database API,它不可移植。
还有request for a portable SQLite library,尚未实施。如果您希望在可用时收到通知,请单击星形图标。
问题是功能齐全的库需要大量的本机代码,但实际上,大多数应用程序只使用一些方法。 Here's an email thread on a way for a developer to implement just the necessary SQLite support methods.
答案 1 :(得分:0)
最简单的方法是使用一些可在Android和iOS平台之间移植的SQLite实现。开箱即用的j2objc工具集库不支持它。
所以当我遇到这个问题时,我为此开发了一些解决方案:https://github.com/vals-productions/sqlighter。
可以在java中编码并转换为目标c,或者执行在两种语言中看起来非常相似的“并行”编码。自述文件包含一些示例。
我的制作时间还不多,但很简单,到目前为止对我有用。