2017-06-02 33 views
-1

我想解析一个字符串,我手动在swift中使用循环创建。我把它作为一个字符串,然后我厌倦了使用Swifty JSON将该字符串转换为json。当我尝试通过json循环时,我的代码永远不会进入循环。我怀疑有数据类型问题,但我被卡住了。任何帮助,将不胜感激。这里是我作为字符串使用Swift和SwiftyJSON解析JSON字符串

[{ 
    "category_name": "AIR SYSTEM", 
    "cntpassed": 0, 
    "cntfailed": 0, 
    "isfailed": 0, 
    "isstarted": 1, 
    "iscomplete": 1, 
    "isnotcomplete": 0, 
    "cnttotal": 5 
}, { 
    "category_name": "ENGINE COMPARTMENT", 
    "cntpassed": 0, 
    "cntfailed": 0, 
    "isfailed": 0, 
    "isstarted": 1, 
    "iscomplete": 1, 
    "isnotcomplete": 0, 
    "cnttotal": 27 
}, { 
    "category_name": "EXTER.", 
    "cntpassed": 0, 
    "cntfailed": 0, 
    "isfailed": 0, 
    "isstarted": 1, 
    "iscomplete": 1, 
    "isnotcomplete": 0, 
    "cnttotal": 3 
}] 

我使用SWIFTY JSON方法

let json = JSON(jsonStringAbove) 

然后我在迅速

public func jsonFormSectionsArray(jsonString: String) -> Array<String> 
{ 
    print("In jsonFormsSectionArray") 
    var anArray: [String] = [] 
    let json = JSON(jsonString) 

    print("\nHeres the JSON \(json)") 

    for (key, subJson) in json { 
     // My code never gets to this point 
     if let category = subJson["category_name"].string { 
      print(category) 
      anArray.append(category) 
     } 
    } 

     print("PETE --> In Function Array \(anArray)") 
     return anArray 
} 
+0

你必须从字符串而不是Json对象创建一个Json数组 – Aditya

+0

@Aditya yes!谢谢,我明白了 – plgelso

回答

2

试图循环通过它把它变成JSON创建的JSON结构你的JSON看起来像一个字典数组,所以你不能用键值对来遍历它。你需要遍历数组。您不需要手动遍历字典中的每个键 - 值对,如果您知道键,则可以直接查找值。

我不确定由SwiftyJSON创建的JSON是如何表示的,但是如果它是一个字典数组,它的工作原理很好。

for dictionary in json { 
    if let category = dictionary["category_name"] as? String { 
     print(category) 
     anArray.append(category) 
    } 
}