sho*_*hoe 1 sqlite full-text-search xamarin.ios fts3
我正在寻找使用Monotouch构建iOS应用程序,该应用程序具有相当大的sqlite db文本.我需要提供快速搜索本文.
我现在最好的解决方案是FTS模块(最好是版本4).我已经读过iOS上的sqlite的默认实例不支持FTS.如果这是真的,使用Monotouch构建自定义sqlite实例的建议方法是什么?或者这可以完成吗?
我发现这个网站描述了如何使用xcode实现这一目标,但目前还不清楚我将如何用Monotouch完成.
http://longweekendmobile.com/2010/06/16/sqlite-full-text-search-for-iphone-ipadyour-own-sqlite-for-iphone-and-ipad/
任何帮助深表感谢!
正如我在上面的评论中提到的,我得到了这个工作,因为Stack Overflow真的帮助了我,我想贡献一点回馈社区.
免责声明
这是来自.NET开发人员,当涉及iOS/MacOS/XCode/Monotouch时,他是N00B.
虽然我在iPad模拟器上测试了这一点,但我还没有在实际设备上测试它.
结束免责声明
这是一个快速的方法来编译自己的SQLite版本并将其包含在Monotouch项目中,目的是支持全文搜索.
第1步:下载SQLite合并文件.
这包括一个文件中的所有SQLite.
http://www.sqlite.org/download.html
第2步:在Xcode for iOS中编译SQLite源代码.
关于如何在此处执行此操作有一个很好的演练:http:
//pp.hillrippers.ch/blog/2009/08/08/Static+SQLite+Library+with+Unicode+Support+for+the+iPhone/
我按照步骤1-5,跳过#6,因为我们没有添加额外的标题.
而不是使用我使用的遍历中使用的编译标志:
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS4
您可能还想添加其他人.
这些编译标志在XCode中添加到"预处理器宏"下项目的"构建"选项卡中.
一旦你编译了这个,你应该有"mylibrary.a".
步骤3:将此文件包含在MonoDevelop项目
中将mylibrary.a添加到MonoDevelop中作为任何其他文件,右键单击它并确保构建操作为"Nothing".
在项目选项中选择"iPhone Build".您需要添加其他mtouch参数.添加以下内容
-gcc_flags "-L${ProjectDir} -lmylibrary -force_load ${ProjectDir}/mylibrary.a"
Run Code Online (Sandbox Code Playgroud)
第4步:构建ac#wrapper
你可能会找到一个好的包装器,但是我很快就推出了自己的包装器.
有关在C#中编写SQLite包装器的好教程,请查看此页面:http:
//www.switchonthecode.com/tutorials/csharp-tutorial-writing-a-dotnet-wrapper-for-sqlite
因为您的库是项目的一部分,所以您不需要按名称引用库,而是使用"__Internal"关键字.*注意"__INTERNAL"中有两个理解*(在我意识到之前,不要问我浪费了多少时间)
这是我的一个样本
[DllImport ("__Internal", EntryPoint="sqlite3_open")]
static extern int sqlite3_open_v2(string filename, out IntPtr db);
Run Code Online (Sandbox Code Playgroud)
将包装器组合起来显然还有很多,但是有很多关于如何做到这一点的信息.一个问题是正确编组从SQLite返回的字符串.(有关Marshaling的更多信息,请参见http://blog.gebhardtcomputing.com/2007/11/marshal-utf8-strings-in-net.html)
这是一个关于将本地库编译成MonoDevelop/monotouch的快速演练,我希望它可以帮助某人.
| 归档时间: |
|
| 查看次数: |
1785 次 |
| 最近记录: |