swift 中的 NSMutableArray 和 NSArray
NSMutableArray and NSArray in swift
最初我将数组声明为:
var wrongAnswersArray: NSArray? = []
wrongAnswerLabel.isHidden = (wrongAnswersArray?.count)! <= 0 ? true:false
我的应用运行良好。后来,我需要修改数组,所以我将其声明为可变的,但我不能使用相同的语句来获取计数。 XCode 建议修改语句如下:
var wrongAnswersArray: NSMutableArray? = []
wrongAnswerLabel.isHidden = (wrongAnswersArray!).count <= 0 ? true:false
此编译但在 运行 时间失败
1) 为什么我们不能使用相同的语句?为什么 NSArray 和 NSMutableArray 的行为不同?
2) 有什么方法可以解决这个 运行 时间错误?
任何与此相关的文档都会有所帮助。
像 swift-array
一样使用 [String]
& 使它成为 let
用于常量 & var
用于可变(变量)
var wrongAnswersArray: [String] = []
wrongAnswerLabel.isHidden = (wrongAnswersArray.count) <= 0 ? true:false
的帮助
为什么要与 array.count <= 0 ? true : false
打交道?为什么还要 <=
?数组可以有 negative 长度吗?你应该这样做:
// start empty
var wrongAnswers = [String]()
... // app might append wrong answers to the array
// Later check:
wrongAnswersLabel.isHidden = wrongAnswers.isEmpty // done!
更好:
或者您可以 "react" 通过使用 Swift "property observer" 来更改数组,例如"willSet":
// start empty
var wrongAnswers: [String] = [] {
willSet {
// Using `willSet` instead of `didSet` allows for use of implicitly declared variable `newValue`
// which is good since it makes refactoring simpler, not having to refer to the name
// of this variable (`wrongAnswers`) which we might want to change in the future
wrongAnswersLabel.isHidden = newValue.isEmpty
}
}
最初我将数组声明为:
var wrongAnswersArray: NSArray? = []
wrongAnswerLabel.isHidden = (wrongAnswersArray?.count)! <= 0 ? true:false
我的应用运行良好。后来,我需要修改数组,所以我将其声明为可变的,但我不能使用相同的语句来获取计数。 XCode 建议修改语句如下:
var wrongAnswersArray: NSMutableArray? = []
wrongAnswerLabel.isHidden = (wrongAnswersArray!).count <= 0 ? true:false
此编译但在 运行 时间失败
1) 为什么我们不能使用相同的语句?为什么 NSArray 和 NSMutableArray 的行为不同?
2) 有什么方法可以解决这个 运行 时间错误?
任何与此相关的文档都会有所帮助。
像 swift-array
一样使用 [String]
& 使它成为 let
用于常量 & var
用于可变(变量)
var wrongAnswersArray: [String] = []
wrongAnswerLabel.isHidden = (wrongAnswersArray.count) <= 0 ? true:false
的帮助
为什么要与 array.count <= 0 ? true : false
打交道?为什么还要 <=
?数组可以有 negative 长度吗?你应该这样做:
// start empty
var wrongAnswers = [String]()
... // app might append wrong answers to the array
// Later check:
wrongAnswersLabel.isHidden = wrongAnswers.isEmpty // done!
更好:
或者您可以 "react" 通过使用 Swift "property observer" 来更改数组,例如"willSet":
// start empty
var wrongAnswers: [String] = [] {
willSet {
// Using `willSet` instead of `didSet` allows for use of implicitly declared variable `newValue`
// which is good since it makes refactoring simpler, not having to refer to the name
// of this variable (`wrongAnswers`) which we might want to change in the future
wrongAnswersLabel.isHidden = newValue.isEmpty
}
}