Xcode 8/Swift 3:让 API 信息离线可用? [复制]
Posted
技术标签:
【中文标题】Xcode 8/Swift 3:让 API 信息离线可用? [复制]【英文标题】: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 DB 或 2。 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:让 API 信息离线可用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 8 / Swift 3:didSelectRowAt 与 didSelectRowAtIndexPath