Swift - 如何在安装之前在应用程序中保存json文件

时间:2017-08-09 11:35:41

标签: ios iphone json swift

我对iOS很陌生,所以我不知道我的问题的最佳解决方案:我使用API​​来获取我在我的应用中显示的数据(发送请求并使用Alamofire获取json文件) )。我的问题是我无法依赖此API来响应(API创建者知道这个问题)。所以我想在我的应用程序中保存我需要的所有json文件(几十个)。这是最好的做法吗?如果是这样,我该怎么做?

2 个答案:

答案 0 :(得分:0)

您需要将应用与这些plist捆绑在一起。它将在首次推出应用程序时提供给您,但也会增加应用程序大小(实际上取决于单个plist大小)。

需要将plist复制到Bundle资源。只需将它们添加到工作区/项目中即可。

这样,这些plist将与您的应用程序捆绑在一起,例如.storyboard,.xib文件和图像。此外,由于这些可以直接从你的ipa中读取,不要在这些plist中保留任何秘密数据

enter image description here

之后要确保只检查Target-> BuildPhases->复制捆绑资源。您的文件应该列在那里。 enter image description here

从捆绑的plist(Swift 3)中读取数据:

if let fileUrl = Bundle.main.url(forResource: "fileName", withExtension: "plist"),
            let data = try? Data(contentsOf: fileUrl) {
            if let result = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) {
                print(result) // result is of type Any here, and needs to be converted to appropriate type(depends on plist root)
            }
        }

答案 1 :(得分:0)

让我重申一下这个问题并告诉我,我是否理解正确。您的应用程序依赖于调用服务器来获取数据,而服务器并不总是响应。您正在考虑当服务器的命中成功时,您希望在服务器发生故障时保存您获取的数据以便能够使用它们。

如果是这种情况,这样做取决于您的应用。如果您的应用程序依赖于向用户显示实时内容,那么显示旧内容是无用的,那么保存数据是没用的;但是,如果您呈现给用户的内容几乎相同或无关紧要,如果该数据没有多少变化,那么最好保存这些数据并将其显示给用户“离线模式”。

如何保存这些数据? iOS中有几种方法可以保存内容。一个是在NSUserDefaults中保存你的对象,这是不值得推荐的。另外两种方法是保存SQLLite或CoreData。您可以在文档中查找更多内容或阅读有关如何执行此操作的文章。我喜欢在SQLLite中保存最多的个人偏好。你应该阅读所有三个,看看哪个最符合你的需求。

希望这会有所帮助。祝你好运。