Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何解析对字符串数组的响应_Ios_Arrays_Swift - Fatal编程技术网

Ios 如何解析对字符串数组的响应

Ios 如何解析对字符串数组的响应,ios,arrays,swift,Ios,Arrays,Swift,我想把它解析到我的MobileOperator数组中 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 \

我想把它解析到我的MobileOperator数组中

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]")
与此相同,只是为了更好地可视化数据

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\"
            ]")
其中,
optional\u a
可以是任何可选的数据类型,
a
非可选的
。基本上,Swift检查它是否为
nil
,如果不是,则将其分配给
a

接下来,对于解析,String类有一个名为
replacingOccurences(of:String!,with String!)
的函数。将此视为查找并替换所有函数。这可用于删除任何无关字符,如“\n”、“\”、“\”、“\”、“[”、“]”和“.”。删除这些字符后,我们需要将字符串拆分为“,”并将其映射到数组中

此代码应适用于:

if let a = optional_a {

}

通过这种方式,我得到了我想要的数组,使用了SwiftyJSON进行解析。

MobileOperator
不是一个
可选的
,因此打印显示了其他内容。可能是某个函数的结果/返回值。显示更多代码。添加到shallowthough,如果您是从后端获得JSON,那么打印整个JSON或发布url以便我们可以帮助您MobileOperator是我的数组,而我在API调用后得到的响应我希望这些数据被附加到MobileOperator数组中。感谢您的回答,这是正确的方法,但我使用SwiftyJSON解决了它。我将在这里发布答案。
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)
}
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()!)
                    }
                }
            }