删除可选的Alamofire(以及任何地方)

时间:2015-06-30 11:57:49

标签: ios swift alamofire

我正在尝试在Swift中实现一个新的REST服务,但我迷路了。我需要在我的服务receeipt中删除“可选”字符串:

func callServiceReceives(){

    var jsonReceived: JSON = []

    Alamofire.request(.GET, "http://localhost:8080/userServicesProvider")
        .responseJSON { (_, _, pruebaJSON, _) in

            jsonReceived = JSON(pruebaJSON!)
            println(jsonReceived["recibos"].array?.count) // "Optional(4)"
    }

}

//  If i try if let temp:String! = String(stringInterpolationSegment: jsonReceived["recibos"].array?.count) {
//  println(temp) -> "Optional(4)"
//  } -> say me "Bound value in a conditional binding must be of Optional type"

//If i try ->     let temp:String! = String(stringInterpolationSegment: jsonReceived["recibos"].array?.count)
//
//                if let temp2 = temp!{
//                    println(temp2) -> "Optional(4)"
//} -> i had the same problem: "Bound value in a conditional binding must be of Optional type"

你能帮我吗?

非常感谢

3 个答案:

答案 0 :(得分:1)

您将!放在错误的位置。它应该在这里:

println(jsonReceived["recibos"].array?.count!)

但为了安全起见,你可能会更好:

println(jsonReceived["recibos"].array?.count.map{String($0)} ?? "Error")

如果您的数组为零,则会打印“错误”,或者:

jsonReceived["recibos"].array?.count.map(println)

如果您的数组为零,则不会打印任何内容。

答案 1 :(得分:0)

您将获得一个可选项,因为您的阵列是可选的。

尝试打印println(jsonReceived[“recipes”].array!.count)

然而,这并不是最好的方法。您应该使用if let语句来检查您的数组是否为零。之后,您可以获得新赠品的数量。这将不再是一个可选项。

if let temp = jsonReceived[“recipes”].array{
    println(temp.count)
}

答案 2 :(得分:0)

如果你不需要知道空数组和没有数组之间是否存在差异......

let count = jsonReceived["recibos"].array?.count as? Int ?? 0