这是Swift关闭吗?

时间:2015-10-02 03:44:41

标签: ios swift

我不理解== false部分,语法看起来像一个闭包但我在Apple文档中找不到解释。

let photoInfos = (JSON.value!.valueForKey("photos") as! [NSDictionary]).filter({
        ($0["nsfw"] as! Bool) == false
    }).map {
        PhotoInfo(id: $0["id"] as! Int, url: $0["image_url"] as! String)
    }

第一个封闭是封闭吗?

1 个答案:

答案 0 :(得分:1)

是的{ ($0["nsfw"] as! Bool) == false }是一个闭包,它将使用这个函数过滤字典(每个元素将扮演$ 0的角色),如果函数的计算结果为true,它将保留,如果不是,它将不会

以下是过滤器上文档的link

以下是使用过滤器和地图的闭包的几个例子。

// this one will filter the array by testing each element to see if the uppercased value matches the value, if so it is kept
let anArray = [ "a", "A", "b", "c"]
let aNewArray = anArray.filter { $0.uppercaseString == $0 }
print(aNewArray)  // prints the array ["A"]

// this one maps all the elements to their uppercase value    
let allUpcase = anArray.map { $0.uppercaseString }
print(allUpcase)  // "["A", "A", "B", "C"]