我正在尝试从本地文件加载一些JSON数据.
在这篇Apple文档中,它说:
使用资产目录管理应用程序的数据文件.文件可以包含除Xcode生成的设备可执行代码之外的任何类型的数据.您可以将它们用于JSON文件,脚本或自定义数据类型
所以我添加了一个新的数据集并将JSON文件放入其中.现在我可以在Assets.xcassets文件夹下看到它(Colours.dataset文件夹里面有colours.json和Contents.json)
我发现这个 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")
}
Run Code Online (Sandbox Code Playgroud)
但是此代码正在打印"无效的文件路径"而不是读取文件.我也试过"颜色"和"Colours.json",但无济于事.
谁能告诉我如何正确添加本地JSON文件并阅读它?
谢谢.
ozg*_*gur 13
您无法像访问随机文件一样访问数据资产文件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)
Run Code Online (Sandbox Code Playgroud)
请注意,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)
Run Code Online (Sandbox Code Playgroud)
此外,NSDataAsset令人惊讶地位于UIKit/AppKit中,因此不要忘记在代码中导入相关框架:
#if os(iOS)
import UIKit
#elseif os(OSX)
import AppKit
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8250 次 |
| 最近记录: |