Xcode 8/Swift 3:让 AP​​I 信息离线可用? [复制]

Posted

技术标签:

【中文标题】Xcode 8/Swift 3:让 AP​​I 信息离线可用? [复制]【英文标题】:Xcode 8/Swift 3: make API information available offline? [duplicate] 【发布时间】:2017-01-24 07:48:05 【问题描述】:

我目前正在开发一个通过 API 运行的 Xcode 8/Swift 3 应用程序。本质上,我使用 SwiftyJSON 从我的 mysql 数据库中解析信息,它使内容保持最新并且易于更新。

为了让内容也可以离线使用,我想介绍一种工具,可以将数据下载并存储在手机上,以便在“离线模式”下使用。

我知道这是一个完全开放的问题,但谁能指出我如何使这些 JSON 信息离线可用的正确方向?我试过在网上搜索没有成功。

【问题讨论】:

为此,您可以使用 sqlite / coredata 并创建具有所有属性的表,然后您应该检查几件事:1. 模式创建 2. 插入 3. 处理旧数据 4. 根据服务更改更改模式(大多数情况下都会发生,所以保持选项打开) 5. 创建模型类进行属性初始化。我知道这需要时间,但与使用任何第三方获取离线数据相比,这就是您完全控制您的应用程序的方式。我在我的电子商务应用程序中做得很好 【参考方案1】:

我知道这不是 Swift,但是这方面的绝对大师最近公开了他的杰作:Dash for iOS

回顾他为实现快速滚动和搜索所做的工作,可能会深入了解如何最好地做到这一点,就像在该领域(可以说)比 Apple 以外的任何人都更有经验的人所做的那样:

https://github.com/Kapeli/Dash-ios

【讨论】:

【参考方案2】:

我更喜欢这里的 2 选项,我会选择 1.SQLite DB2。 NSURLCache

对于 SQLite DB,您可以使用 FMDB wrapper-https://github.com/ccgus/fmdb

对于 NSURLCache,请查看此链接 Best way to Cache JSON from API in SWIFT?

如果您只是想保存 json,请使用 NSURLCache 进行离线模式。

【讨论】:

FMDB 有 Swift 替代品(在 Swift 中感觉很奇怪):github.com/groue/GRDB.swift(应用程序工具包)或github.com/stephencelis/SQLite.swift(库)【参考方案3】:

在 iOS 上实现离线有两条最佳途径,它们是 CoreData 和 SQLITE。根据 CoreData 的定义,它是项目的模型层。它在开发人员方面付出了更少的努力。对比一下 SQLITE 有同样的方法,但很少努力。

在我的项目中,我们使用 CoreData 进行离线维护。实际上,我们对关系数据获取几乎没有什么顾虑,尽管有一个 Predicates 代表 CoreData,但它仍然仅限于某些部分。这类情况 SQLITE 真的是救命稻草。我们可以通过简单的 JOIN 命令轻松获取记录。

结论: 如果你有更复杂的数据关系,最好使用 SQLITE,除了 CoreData 是最好的选择。

【讨论】:

以上是关于Xcode 8/Swift 3:让 AP​​I 信息离线可用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 - Swift 3 - 破坏我的应用程序

Xcode 8 / Swift 3:didSelectRowAt 与 didSelectRowAtIndexPath

打印可变展开 Segue - Xcode 8.0 Swift 3.0

致命错误 Xcode 8 Swift 3

Xcode 8 Swift 3:未调用模态演示转换委托

我如何在 XCODE 8、Swift 3 中使用 UIAutomation