[{"name":"Air Elemental","toughness":"4","printings":["LEA","BTD","7ED","8ED","9ED","10E","DD2","M10","DPA","ME4","DD3_JVC"]}]
我有一个JSON,每个列表中都有一个名为" prints"如下所示,我如何从每个列表中取出这个数组并将其转换为类似" LEA-BTD-7ED"的字符串。这是我到目前为止的事情,但它崩溃了。
let err : NSErrorPointer?
let dataPath = NSBundle.mainBundle().pathForResource("cardata", ofType: "json")
let data : NSData = try! NSData(contentsOfFile: dataPath! as String, options: NSDataReadingOptions.DataReadingMapped)
do{
var contents = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as! [AnyObject]
for var i = 0;i<contents.count;++i{
let printing = contents[i]["printings"] as! String
}
}
答案 0 :(得分:1)
以下是代码:
let path = dataPath!
if let JSONData = NSData(contentsOfFile: path)
{
do
{
if let dictionariesArray = try NSJSONSerialization.JSONObjectWithData(JSONData, options: NSJSONReadingOptions()) as?
[[String: AnyObject]]
{
for dictionary in dictionariesArray
{
if let printingsArray = dictionary["printings"] as? [String]
{
let printingsString = printingsArray.joinWithSeparator("-")
print(printingsString)
}
}
}
}
catch
{
print("Could not parse file at \(path)")
}
}
执行它打印“LEA-BTD-7ED-8ED-9ED-10E-DD2-M10-DPA-ME4-DD3_JVC”
答案 1 :(得分:0)
您无法将Array
(contents[i]["printings"]
)投射到String
。您想要的是Array
joinWithSeparator()
方法,如下所示:
let printing = contents[i]["printing"] as! Array
let printingStr = printing.joinWithSeparator("-")
(实际上,我不确定你是否需要as! Array
;没有它就试试吧。)