检查Swift Dictionary是否包含无值?

时间:2016-02-15 16:51:52

标签: arrays swift dictionary swift2

所以我正在创建一个待办事项列表应用程序,我希望在删除所有购物项目时通知用户。我有一个字典,其中包含String:store作为键,[String]:items作为值。有没有快速的方法来检查所有项目的数组是否为空?

4 个答案:

答案 0 :(得分:12)

有简单的方法:

dicts.values.flatten().isEmpty

但是,这将在没有任何快捷方式的情况下遍历所有列表。通常这不是问题。但是如果你想在找到一个非空的时候拯救:

func isEmptyLists(dict: [String: [String]]) -> Bool {
    for list in dicts.values {
        if !list.isEmpty { return false }
    }
    return true
}

当然,你可以使这更加通用,以获得简短和方便:

extension SequenceType {
    func allPass(passPredicate: (Generator.Element) -> Bool) -> Bool {
        for x in self {
            if !passPredicate(x) { return false }
        }
        return true
    }
}

let empty = dicts.values.allPass{ $0.isEmpty }

答案 1 :(得分:5)

您可以使用isEmpty

var dict: Dictionary<Int, String> = [:]

var result = dict.isEmpty

result将为true

答案 2 :(得分:2)

功能性编程方法:

let allEmpty = arr.reduce(true) { $0 && $1.1.isEmpty }

如果您不是隐式闭包参数的忠实粉丝,您当然可以命名它们:

let allEmpty = arr.reduce(true) { empty, tuple in empty && tuple.1.isEmpty }

答案 3 :(得分:-1)

如果计数值大于0那么它不是空的..