2017-05-30 44 views
-10
var mobileOprator = [String]() // My Array 

//My Response 
Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \"TATA CDMA\",\n \"TATA DOCOMO\",\n \"Telenor\",\n \"Videocon\",\n \"Vodafone\"\n]") 

我想解析它到我的mobileOprator数组。我如何解析这respose我的字符串阵列

+1

'mobileOprator '不是'可选',所以打印显示其他内容。可能是某个函数的结果/返回值。显示更多代码。 – shallowThought

+0

添加到shallowThought,如果你从后端得到这个作为JSON,然后打印整个JSON或张贴URL,以便我们可以帮助你 – Janmenjaya

+0

mobileOprator是我的数组,我的API调用后得到的响应我希望这些数据是附加在mobileOprator数组中。 –

回答

1
Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \"TATA CDMA\",\n \"TATA DOCOMO\",\n \"Telenor\",\n \"Videocon\",\n \"Vodafone\"\n]") 

是与此相同,只是以可视化的数据更好一点

Optional("[ 
       \"Aircel\", 
       \"Airtel\", 
       \"BSNL\", 
       \"Idea MTV\", 
       \"MTNL\", 
       \"MTS\", 
       \"Reliance CDMA\", 
       \"Reliance GSM\", 
       \"Reliance JIO\", 
       \"TATA CDMA\", 
       \"TATA DOCOMO\", 
       \"Telenor\", 
       \"Videocon\", 
       \"Vodafone\" 
      ]") 

由于数据是可选的,我们也应检查它是否存在,如果它开始分析。这可以使用下面的语法来完成:

if let a = optional_a { 

} 

其中optional_a可以是任何可选的数据类型和anonoptional。基本上,Swift会检查它是否为nil,如果不是,则将其分配给a

接下来进行解析,String类具有一个名为replacingOccurences(of: String!, with String!)的函数。把它看作一个查找并替换所有的函数。这可以用来删除任何无关的字符,例如“\ n”,“\”,“”,“”,“”,“”和“”。一旦这些字符被删除,我们需要用“ “,并将其映射到一个数组

此代码应工作:

var optionalResponse = Optional("[\n \"Aircel\",\n \"Airtel\",\n \"BSNL\",\n \"Idea MTV\",\n \"MTNL\",\n \"MTS\",\n \"Reliance CDMA\",\n \"Reliance GSM\",\n \"Reliance JIO\",\n \"TATA CDMA\",\n \"TATA DOCOMO\",\n \"Telenor\",\n \"Videocon\",\n \"Vodafone\"\n]") 
if var response = optionalResponse { 
    let charsToRemove = ["\n", "\"", "\\", "[", "]", " "] 
    for char in charsToRemove { 
     response = response.replacingOccurrences(of: char, with: "") 
    } 
    let fullNameArr = response.characters.split{$0 == ","}.map(String.init) 

    print(fullNameArr) 
} 
+1

感谢您的回答是正确的方式,但我通过使用** SwiftyJSON **解决了它。我会在这里发布答案。 –

0
if let dataa = data as? String{ 
       if let dataFromString = dataa.data(using: String.Encoding.utf8, allowLossyConversion: false) { 
        let json = JSON(data: dataFromString) 
        for (_, val) in json { 
         self.mobileOprator.append(val.rawString()!) 
        } 
       } 
      } 

这样,我得到了我想要的阵列,用于SwiftyJSON解析..