首页 > 解决方案 > 如何从 iOS Extension 访问 Flutter 项目的 ObjectBox 数据库?

问题描述

我有一个建立在 ObjectBox 数据库之上的 Flutter 应用程序。

该应用程序已经在 App Store 和 Play Store 上。

现在我正在尝试使用 XCode 向 iOS 平台添加共享扩展。

我需要从 Share Extension 访问 ObjectBox 数据库,但我找不到有关此用例的文档。

到目前为止,我尝试了以下步骤。

  1. 如果 Platform.isIOS 将 objectbox 目录从 DocumentsDirectory 移动到 AppGroupDirectory(objectbox 目录有两个文件 - data.mdb 和 lock.mdb)

  2. 修改 Podfile 以安装 ObjectBox for Share Extension,如下所示。

    target 'ShareExtension' do
        use_frameworks!
        use_modular_headers!
    
        pod 'ObjectBox'
    end
    
  3. 在 ShareExtension 中定义实体与我在 Flutter 项目中定义的完全相同,以告诉 ObjectBox 我将使用哪些实体。

    class Folder: Entity {
     var id: Id = 0
     ...more properties
    
     var rootFolder: ToOne<Folder> = nill
    
     // objectbox: backlink = "rootFolder"
     var subfolders: ToMany<Folder> = nill
    }
    

我成功地完成了第 1 步和第 2 步,但我被困在第 3 步。我有这个错误。

类型“文件夹”不符合协议“EntityInspectable”

在此处输入图像描述

我想这与 model-Runner.json 有关。ObjectBox 库应该为所有目标生成实体相关文件,但似乎没有。

下面是我执行 Pods/ObjectBox/setup.rb 时的结果

在此处输入图像描述

我已经看到了这个问题,但它似乎是一个不同的情况。

请有人引导我走向正确的方向。

标签: iosxcodeflutterobjectboxshare-extension

解决方案


推荐阅读