m.u*_*mar 2 xcode json ios swift
嗨,所以这里是用于解析Swift 2中的JSON文件的样板代码.我以前使用它并且它可以工作但是由于某种原因它在最新版本的Xcode 7.1和Swift 2中被破坏了.有关这个人的任何想法?错误是"参数标签"(contentsOfFile:,options:,error :)'与任何可用的重载都不匹配"
import Foundation
extension Dictionary {
static func loadJSONFromBundle(filename: String) -> Dictionary<String, AnyObject>? {
if let path = NSBundle.mainBundle().pathForResource(filename, ofType: "json") {
var error: NSError?
let data = NSData(contentsOfFile: path, options: NSDataReadingOptions, error: &error)
if let data = data {
let dictionary: AnyObject? = NSJSONSerialization.JSONObjectWithData(data,
options: NSJSONReadingOptions(), error: &error)
if let dictionary = dictionary as? Dictionary<String, AnyObject> {
return dictionary
} else {
print("Level file '\(filename)' is not valid JSON: \(error!)")
return nil
}
} else {
print("Could not load level file: \(filename), error: \(error!)")
return nil
}
} else {
print("Could not find level file: \(filename)")
return nil
}
}
}
Run Code Online (Sandbox Code Playgroud)
您使用的是不是最新的快速代码,
我纠正了你的代码,注意你应该选择最好的NSDataReadingOption套房,我选择NSDataReadingOptions.DataReadingMapped
加上一些api不会将错误作为输入,所以我删除了它.
请注意,当您捕获错误时,您可以使用error明确声明它的对象,这就是我删除您的错误变量的原因
最后,用于解析json的新api应该在try catch中,这就是为什么我添加了try catch
import Foundation
extension Dictionary {
static func loadJSONFromBundle(filename: String) -> Dictionary<String, AnyObject>? {
if let path = NSBundle.mainBundle().pathForResource(filename, ofType: "json") {
do{
let data = try NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMapped)
do{
let dictionary: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data,
options: NSJSONReadingOptions())
if let dictionary = dictionary as? Dictionary<String, AnyObject> {
return dictionary
} else {
print("Level file '\(filename)' is not valid JSON")
return nil
}
}catch {
print("Level file '\(filename)' is not valid JSON: \(error)")
return nil
}
}catch {
print("Could not load level file: \(filename), error: \(error)")
return nil
}
} else {
print("Could not find level file: \(filename)")
return nil
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上:
NSData(contentsOfFile: path, options:不采取错误了.dictionary: AnyObject? = try NSJSONSerialization.JSONObjectWithData(data,
options不采取错误了.| 归档时间: |
|
| 查看次数: |
3812 次 |
| 最近记录: |