如何使用SwiftyJSON从文件中检索数据

时间:2015-02-28 17:02:40

标签: json swift swifty-json

我已将JSON文件添加到我的文件系统,其中数据的结构如下:

  

{“DDD”:“3D Systems Corporation”,“MMM”:“3M Company”,“WBAI”:   “500.com Limited”,“WUBA”:“58.com Inc.”,“AHC”:“A.H。Belo   公司“,”ATEN“:”A10 Networks,Inc。“,”AAC“:”AAC Holdings,   Inc.“,”AIR“:”AAR Corp.“}

我的文件名是stockDict.json,我正在尝试使用此代码从中检索数据:

let jsonFilePath:NSString = NSBundle.mainBundle().pathForResource("stockDict", ofType: "json")!
        let jsonData:NSData = NSData.dataWithContentsOfMappedFile(jsonFilePath as String) as! NSData
        let error:NSError?
        let json = JSON(jsonData)

        println(json[0][0].string)

但我打印的所有内容都是nil。我的代码出了什么问题?

任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:10)

你试过

吗?
let json = JSON(data: jsonData) // Note: data: parameter name
println(json["DDD"].string)

答案 1 :(得分:5)

我没有代表发表评论,但是从iOS 8开始,这个答案已被弃用,特别是以下部分。

.dataWithContentsOfMappedFile

XCode告诉我。

'dataWithContentsOfMappedFile' was deprecated in iOS 8.0: Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead.

------ -------- EDIT

这是我正在使用的更新代码。它编译并运行iOS 9.1的目标。

let path = NSBundle.mainBundle().pathForResource("fileName", ofType: "json")
let jsonData = NSData(contentsOfFile:path!)
let json = JSON(data: jsonData!)

答案 2 :(得分:4)

Swift 3/4版本:

let path = Bundle.main.path(forResource: "JSON", ofType: "json")!
let jsonString = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)
let json = JSON(parseJSON: jsonString!)