将 sqlite3 db 关联到 iPhone 应用程序

2023-12-05

我正在尝试将 SQLite3 数据库文件与我们的应用程序关联起来,以便可以轻松地从电子邮件打开备份的数据库。然而,以下内容似乎不起作用,因为“邮件”仍然无法识别该文件(在 iPad 和 iPhone 4 上):

<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.database</string>
            <string>public.data</string>                    
        </array>
        <key>UTTypeDescription</key>
        <string>App Database File</string>
        <key>UTTypeIdentifier</key>
        <string>com.company.App.db</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <string>db</string>
            <key>public.mime-type</key>
            <string>application/x-sqlite3</string>            
        </dict>
    </dict>
</array>

 <key>CFBundleDocumentTypes</key>
 <dict>
  <key>CFBundleTypeName</key>
  <string>App Database</string>
  <key>CFBundleTypeIconFiles</key>
  <array>
   <string>Icon-Small.png</string>
   <string>Icon.png</string>
  </array>
    <key>CFBundleTypeRole</key>
        <string>Editor</string>

  <key>LSItemContentTypes</key>
  <array>
   <string>com.company.App.db</string>
  </array>
  <key>LSHandlerRank</key>
  <string>Alternate</string>
 </dict>
</dict>

知道我做错了什么吗?


为了完整起见,也可能是我自己的参考,这里有一些让它为我工作的进一步细节:

声明您的应用程序支持的文档类型(例如sqlite3数据库)

<key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeIdentifier</key>
            <string>com.company.sqlite3.database</string>
            <key>UTTypeReferenceURL</key>
            <string>http://www.company.com/</string>
            <key>UTTypeDescription</key>
            <string>MyCompany SQLite Database</string>
            <key>UTTypeIconFile</key>
            <array>
                <string>Icon-Small.png</string>
                <string>Icon.png</string>
            </array>
            <key>UTTypeConformsTo</key>
            <array>
                <string>public.database</string>
                <string>public.data</string>
            </array>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <array>
                    <string>sqlite</string>
                </array>
                <key>public.mime-type</key>
                <array>
                    <string>application/x-sqlite3</string>
                    <string>application/octet-stream</string>
                </array>

            </dict>
        </dict>
    </array>
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>MyCompany SQLite Database</string>
        <key>CFBundleTypeIconFiles</key>
        <array>
            <string>Icon-Small.png</string>
            <string>Icon.png</string>
        </array>

        <key>CFBundleTypeExtensions</key>
        <array>
            <string>sqlite</string>
        </array>

        <key>CFBundleTypeMIMETypes</key>
        <array>
            <string>application/x-sqlite3</string>
            <string>application/octet-stream</string>
        </array>

        <key>LSHandlerRank</key>
        <string>Alternate</string>

        <key>LSItemContentTypes</key>
        <array>
            <string>com.company.sqlite3.database</string>
        </array>

        <key>NSPersistentStoreTypeKey</key>
        <string>SQLite</string>

    </dict>
</array>

将上述 XML 复制粘贴到您的 Info.plist 文件中。

将“存储类型”设置为“SQLite”对我来说并不是杀手级的解决方案。

我之前的文章提到了一种相当不正确的让它工作的方法,它接受所有文件并且没有正确导出类型。

此外,如果您的应用程序将这些文件作为附件通过电子邮件发送,请确保它与您设置的捕获的 MIME 类型匹配。应用程序/八位字节流并不重要,只是我们的应用程序的旧版本正在通过电子邮件发送具有该 MIME 类型的数据库。

eg,

[controller addAttachmentData:[NSData dataWithContentsOfFile:dbPath] mimeType:@"application/x-sqlite3" fileName:filename];

我当然希望其他尝试了解如何让他们的应用程序支持打开 sqlite3 数据库备份的人会发现这很有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 sqlite3 db 关联到 iPhone 应用程序 的相关文章

随机推荐

  • 如何使用另一个对象的属性值访问 JavaScript 对象的属性

    假设我有这些 JavaScript 对象 questions name Age options boy girl daddy answers Age 21 boy checked daddy checked 所以如果我想访问 Age 从答案
  • 常量缓冲区的aligned_malloc() 与alignas()

    在C 中 我们有关键字alignas n 我们有 aligned malloc m n 功能 alignas作用于类型 同时aligned malloc无论你怎么称呼它 都可以工作 我可以用吗alignas 16 满足 Direct3D 常
  • 选择Android开发SDK位置时需要指定哪个文件夹?

    在 LiveCode 中设置移动支持首选项以开发 Android 时 哪个文件夹内安卓文件夹需要选择存档吗 每当我选择一个文件夹时 似乎都会出现一条错误消息 The chosen folder is not a valid Android
  • 无法从 Android 中的 Firebase Storage 获取下载网址[重复]

    这个问题在这里已经有答案了 无法从 Android 中的 Firebase 存储获取下载网址 我得到 com google android gms tasks zzn 而不是 url 下载链接 我的代码 storageReference g
  • 关于问号“惰性”模式的正则表达式

    我明白了 这里mark的意思是 懒惰 我的问题本质上是 0 9 2 vs 0 9 2 它们相同吗 如果是这样 我们为什么要写前一个表达式 惰性模式不是更昂贵的性能吗 如果不是 你能分辨出区别吗 什么是 懒惰 不情愿 匹配 与正则表达式匹配时
  • 回收站视图中的项目重叠

    当用户滚动时 我的回收器视图中的项目会重叠 注意底部重叠的文本 这是生成此视图的代码 ArrayList
  • 缓冲区之间的 Emacs 选项卡

    有没有一种方法可以在缓冲区之间切换而无需通过 buffer list 或者写入我想要切换到的缓冲区的名称 更具体地说 我想知道 emacs 是否可以在缓冲区之间进行制表 就像它在 notepad 中的工作方式一样 Emacs 22 1 及更
  • 使用“auto”的声明是否与使用具体类型说明符的 extern 声明匹配?

    考虑以下程序 extern int x auto x 42 int main Clang 3 5 接受它 现场演示 GCC 4 9 和 VS2013 没有 前者的现场演示 谁是对的 C 标准中规定的正确行为在哪里 令人惊讶的是 标准中对此的
  • 复杂的 Mongoose 过滤查询

    我正在构建一个允许用户使用侧边栏过滤结果的网站 他们选择的标准越多 搜索结果就应该越具体 见附图 用户可以选择与他们要查找的内容相匹配的过滤器 复选框 我为此使用 MongoDB 我的架构如下 brandName type String r
  • Raspberry pi 4 用 java 控制 GPIO

    我想用java控制我的树莓派4上的16 2液晶显示屏 问题是Pi4J 用java修改gpios的解决方案没有更新到pi4 还有其他解决方案吗 当我启动程序时出现此错误 pi raspberrypi desktop gpio sudo sta
  • 如何在 Yii 中为单个日期属性设置多个字段(D/M/Y)?

    我想将用户出生日期存入我的数据库 表中有一个字段称为dob 当我创建模型和 CRUD 时 它生成了文本字段dob一如既往 但我想创建三个输入 多年 几个月来 和日期 所以我的问题是如何在模型的表单中添加额外的输入 我正在考虑向模型类添加新属
  • iPhone可以与JMS通信吗?

    只是想知道是否有人知道如何在 iPhone 和 iPhone 之间发送 接收 XML 消息Java消息服务 Regards 有几种方法可以实现这一点 要么通过 MQ 附带的 HTTP 桥 我自己已经这样做了 要么使用新的 MQTT 支持 您
  • MKMapView持续监控航向

    我在位于我的顶部的图层中渲染一些内容MKMapView 除了旋转之外 整个事情都运转良好 当用户旋转地图时 我需要能够旋转我在自己的图层中渲染的内容 我发现的标准答案是使用 NSLog heading f self mapView came
  • mozilla 和 safari 的仪表栏样式

    I am using the following css on my meter bars but somehow the styling does not work on safari see below screenshots I am
  • 如何停止 while 循环

    这个 while 循环永远不会结束 例如 当我输入错误的密码时 它会一遍又一遍地进入 密码错误 部分 Logo inFile open UsernamePassword txt if inFile cout lt lt Unable to
  • 在http标头中设置身份验证令牌

    我一直在关注关于如何设置身份验证令牌的railscasthttp railscasts com episodes 352 securing an api view asciicast 我已经很好地设置了我的应用程序 它使用authentic
  • 获取字符串的每个组合

    我有一个组合学作业 涉及从特定的字符串组合中获取长度小于或等于 6 的每个单词 在本例中 它是 S a ab ba 教授刚刚开始列出它们 但我认为用程序来解决会更容易 唯一的问题是我无法得到一个好的算法来实际计算每个可能的选项 如果有人可以
  • Onchange 事件运行不佳

    我创建了以下 html 页面
  • 必须使用 fibo_ 实例作为第一个参数调用未绑定方法 f() (改为使用 classobj 实例)

    在 Python 中 我尝试在类中运行一个方法 但出现错误 Traceback most recent call last File C Users domenico Desktop py main py line 8 in
  • 将 sqlite3 db 关联到 iPhone 应用程序

    我正在尝试将 SQLite3 数据库文件与我们的应用程序关联起来 以便可以轻松地从电子邮件打开备份的数据库 然而 以下内容似乎不起作用 因为 邮件 仍然无法识别该文件 在 iPad 和 iPhone 4 上