【问题标题】:MVVMCross + SQLCipher = impossible?MVVMCross + SQLCipher = 不可能?
【发布时间】:2014-04-30 09:26:44
【问题描述】:

我是使用 Xamarin 和 MVVMCross 开发 iOS 应用程序的初学者。 MVVMCross 非常适合 Xamarin 开发平台,其功能非常出色!我在 youtube 上观看了几个 MVVMCross N=x 教程视频,这对我了解如何使用该框架有很大帮助。 我目前正在开发的 iOS 应用程序应该使用数据库加密来保护数据。因此我想使用 Xamarin SQLCipher 组件。这就是我的问题:

据我所知,它是一个特定于平台的库,但我想编写一个 MVVMCross-SQLCipher-plugin,就像 SQLite 社区插件一样,它在 PCL 核心和特定于平台的库中分开。有什么建议我可以如何做到这一点,还是因为 SQLCipher 架构而不可能?

【问题讨论】:

    标签: ios xamarin.ios xamarin mvvmcross sqlcipher


    【解决方案1】:

    我们使用了 MvvmCross 中包含的标准 SQLite 实现,只是将 SQLite 的二进制文件交换为 SQLCipher,它工作正常。

    我相信所有的调用都在两个二进制文件中,所以应该没有什么其他要求,只要确保你在数据库上设置了密码:

    new SQLiteConnection(databasePath, password)
    

    【讨论】:

    • 目前我有点卡住了。我的方法是创建一个新的 SQLCipher-MVVMCross-Plugin(在 PCL 核心和平台特定库中分离)。我创建了一个 PCL 核心库,其中包括原始 SQLite 库(核心部分)。如果我创建平台特定的插件部分,我将不得不实现 SQLite 的原始接口。我可以在此处包含 SQLCipher 库,但它没有实现 SQLite 库的原始接口。 (请参阅更详细的 MVVMCross-Plugins 演示文稿:speakerdeck.com/cirrious/plugins-in-mvvmcross)。您是如何解决这个问题的?
    • SQLCipher 应该以完全相同的方式实现 SQLite 中的所有内容,即使在相同的命名空间中也是如此,因此它应该是直接的二进制交换。你能告诉我你指的是哪个接口吗?
    • 我认为我使用了错误的接口:Cirrious.MvvmCross.Community.Plugins.Sqlite.ISQLiteConnection 这是 MVVMCross SQLite 社区版的接口。
    • 对我有什么额外的提示吗?您是否为 SqlCipher 创建了自己的 MVVMCross 插件,可以在任何其他 MVVMCross 项目中使用?我非常感谢您的每一次帮助。
    猜你喜欢
    • 2014-09-16
    • 2013-10-15
    • 2016-11-09
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多