我有一个自定义模型的数组,我想检查它是否为零并且其大小大于0.
以下是我的自定义对象数组
var listCountries : [Countries]? = nil
现在在viewDIdLoad中我想对它进行检查。我是Swift的新手。我有很好的Java工作经验。
我已经读出了可选值概念和保护,如果是let语句。但我无法理解它们的使用效率。我读了太多SO问题,但未能弄明白。
例如,如果我想检查java中的上部给定数组,我只需要做
if(listCountries != null && listCountries.size()>0){
//DO something
}
总结一下我的问题:
请帮忙。我知道这个问题有不同的问题。但这有一些不同的背景。
答案 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
}
}