Ios 如何使用NSObject属性
因此,我有一个名为Ios 如何使用NSObject属性,ios,swift,optional,Ios,Swift,Optional,因此,我有一个名为Account的NSObject,其中包含一些变量。我在类中添加了getter和setter方法,但是当我尝试设置值并调用get时,得到的结果是nil import UIKit class Account: NSObject { var firstName: String = "" var lastName: String = "" //setters func setNameFirst(newName: String){
Account
的NSObject
,其中包含一些变量。我在类中添加了getter和setter方法,但是当我尝试设置值并调用get时,得到的结果是nil
import UIKit
class Account: NSObject {
var firstName: String = ""
var lastName: String = ""
//setters
func setNameFirst(newName: String){
firstName = newName
}
func setNameLast(newName: String){
lastName = newName
}
//getters
func getFirstName() -> String{
return firstName
}
func getLastName() -> String{
return lastName
}
}
在另一个视图控制器中,我尝试设置并打印其中一个变量
import UIKit
var test: Account?
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
test?.setNameFirst("John")
print(test?.getFirstName())
}
}
但是当它打印时,我得到了
nil
。您声明了test
作为可选的Account
——这就是Account?
的含义
如果您从未将其初始化为任何值,它将保持nil
并打印nil
要纠正这一点,您需要添加(正如瓦卡瓦马在评论中所说):
现在,test
将是Account
的一个实例,而不是nil
在操场上的其他示例:
let test : Account?
print(test) // won't run
但是
此外,您的getter和setter是多余的。
这样做:
let test = Account()
test.firstName = "First"
print(test.firstName) // prints "First\n"
同:
let test = Account()
test.setNameFirst("First")
print(test.getFirstName()) // prints "First\n"
您从未创建过
帐户
对象。您需要在某个时候执行test=Account()
。您不应该手动添加setter和getter。您可以通过执行test?.firstName=“John”
和print(test.firstName)
来获取/设置属性。这就是原因!非常感谢
let test = Account()
test.firstName = "First"
print(test.firstName) // prints "First\n"
let test = Account()
test.setNameFirst("First")
print(test.getFirstName()) // prints "First\n"