检查数组是否为零

时间:2018-05-31 10:39:14

标签: ios arrays swift

我有一个自定义模型的数组,我想检查它是否为零并且其大小大于0.

以下是我的自定义对象数组

  

var listCountries : [Countries]? = nil

现在在viewDIdLoad中我想对它进行检查。我是Swift的新手。我有很好的Java工作经验。

我已经读出了可选值概念和保护,如果是let语句。但我无法理解它们的使用效率。我读了太多SO问题,但未能弄明白。

例如,如果我想检查java中的上部给定数组,我只需要做

if(listCountries != null && listCountries.size()>0){
    //DO something 
}

总结一下我的问题:

  1. 如何让上层给定(Java代码)签入swift 4.?什么是更顺畅和可靠的方式。
  2. 如果let,guard,guard let语句有什么用处。如果我声明一个变量(数组,字符串)作为可选项,我必须承担可选的检查,如强制包装每个地方。这对我来说太混乱了。
  3. 请帮忙。我知道这个问题有不同的问题。但这有一些不同的背景。

4 个答案:

答案 0 :(得分:6)

只需使用??

if !(listCountries ?? []).isEmpty {

但是,由于你想在listCountries块中使用if,你应该打开

if let listCountries = self.listCountries, !listCountries.isEmpty {

理想情况下,如果nil和空意味着与您相同,请不要使用可选项:

var listCountries: [Countries] = []

答案 1 :(得分:3)

我会这样做...

if let list = listCountries, !list.isEmpty { // Can also use list.count > 0
    // do something
}

即使你没有在大括号内使用list,你仍然在条件中使用列表。

或者,就像Sulthan所说的那样......如果它没有任何区别,那就开始吧。

答案 2 :(得分:1)

显然,我认为你能够识别nil数组和空数组之间的区别。

因此,如果我们尝试对您的问题实施字面翻译:

  

我想检查它是否为零并且其大小大于0

对于第一个条件:

// "I want to check if it is not nil":
if let unwrappedList = listCountries {
    // ...
}

和第二个条件:

// "I want to check if it is not nil":
if let unwrappedList = listCountries {
    // "and its size is greater then 0":
    if !unwrappedList.isEmpty {
        // ...
    }
}

但是,您可以通过使用逗号来实现多子句条件来组合这两个条件:

// I want to check if it is not nil and its size is greater then 0
if let unwrappedList = listCountries, !unwrappedList.isEmpty {
    // ...
}

或者使用guard声明:

// I want to check if it is not nil and its size is greater then 0
guard let unwrappedList = listCountries, !unwrappedList.isEmpty else {
    return
}

答案 3 :(得分:-1)

if let list = listCountries {
    if(!list.isEmpty && list.count > 0) {
            //value   
        }
}