ios – 添加JSON作为资产并阅读它

前端之家收集整理的这篇文章主要介绍了ios – 添加JSON作为资产并阅读它前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从本地文件加载一些 JSON数据.

this Apple doc它说:

Manage the data files for your app using the asset catalog. A file can
contain any sort of data except device executable code generated by
Xcode. You can use them for JSON files,scripts,or custom data types

所以我添加了一个新数据集并将JSON文件放入其中.现在我可以在Assets.xcassets文件夹下看到它(Colours.dataset文件夹里面有colours.json和Contents.json)

我找到了this SO答案,显示了如何读取JSON文件,我正在使用此代码来读取文件

if let filePath = NSBundle.mainBundle().pathForResource("Assets/Colours",ofType: "json"),data = NSData(contentsOfFile: filePath) {

        print (filePath)

        do {
            let json = try NSJSONSerialization.JSONObjectWithData(data,options: NSJSONReadingOptions.AllowFragments)
            print(json)
        }
        catch {

        }
    } else {
        print("Invalid file path")
    }

但是此代码正在打印“无效的文件路径”而不是读取文件.我也试过“颜色”和“Colours.json”,但无济于事.

谁能告诉我如何正确添加本地JSON文件并阅读它?

谢谢.

解决方法

您无法使用NSBundle.pathForResource访问随机文件的方式访问数据资产文件.由于它们只能在Assets.xcassets中定义,因此需要初始化NSDataAsset实例以访问其内容
let asset = NSDataAsset(name: "Colors",bundle: NSBundle.mainBundle())
let json = try? NSJSONSerialization.JSONObjectWithData(asset!.data,options: NSJSONReadingOptions.AllowFragments)
print(json)

请注意,NSDataAsset类是从iOS 9.0开始引入的. macOS 10.11.

Swift3版本:

let asset = NSDataAsset(name: "Colors",bundle: Bundle.main)
let json = try? JSONSerialization.jsonObject(with: asset!.data,options: JSONSerialization.ReadingOptions.allowFragments)
print(json)

此外,NSDataAsset令人惊讶地位于UIKit / AppKit中,所以不要忘记在代码中导入相关框架:

#if os(iOS)

    import UIKit

#elseif os(OSX)

    import AppKit

#endif
原文链接:https://www.f2er.com/iOS/332772.html

猜你在找的iOS相关文章