【问题标题】:Check for uninitialized array in swift [duplicate]快速检查未初始化的数组[重复]
【发布时间】:2015-05-30 01:58:49
【问题描述】:

我正在尝试检查数组是否在 Swift 中初始化。我正在编写 iOS Programming Big Nerd Ranch Guide,代码在目标 C 中,我正在尝试用 swift 编写它。我需要一种方法来检查数组是否已初始化,请检查以下代码:

var items1:[string]  
var items2:[string]!

override init(){
    super.init()
    //how do i check if items1 or items2 is initialized 
    if(items1 == nil){ //this does not work
    //Initialize the array and do something with it!! 
    }
}

【问题讨论】:

  • 看看上面的扭结可能对你的问题有很大帮助

标签: ios swift


【解决方案1】:

如果你有?(items1)或!(items2)的属性,你需要检查它是否被初始化。因为它可以是nil

你不要检查items3,因为它必须在init方法中初始化。

class TestClass:NSObject{
    var items1:[String]?;
    var items2:[String]!
    var items3:[String]

    override init() {
        items3 = [String]()
        super.init()
    }

    func testFunction(){
        if items1 == nil{

        }
        if items2 == nil{

        }
    }
}

你可以用这个检查一个数组是否为空

if items3.count == 0{

}

或者这个

if items3.isEmpty{

}

【讨论】:

  • 关键点是,如果你有一个 var 或 let 这不是可选的,编译器会要求你在初始化程序中为其分配一个值。如果你不这样做,你的代码将无法编译。
  • 这就是swift中可选和必需变量的全部意义。如果它不是可选的,那么一旦执行了 init 方法,它就可以永远为 nil。你可以依赖它。
【解决方案2】:

您可以使用 .isEmpty 方法来检查项目。 使用 if let 语句检查对象是否已初始化。

let array = Books(title: "Title")


if let newBook = array {
    println("A book was initialized with the title \(array.title)")
}

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 2016-05-27
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2018-04-05
    • 2023-02-11
    相关资源
    最近更新 更多