如何使用NSObject属性

时间:2016-08-17 20:35:03

标签: ios swift optional

所以我有一个名为NSObject的{​​{1}},其中包含一些变量。我在类中添加了getter和setter方法,但是当我尝试设置值并调用它们时,我得到了nil。

Account

在另一个视图控制器中,我尝试设置并打印其中一个变量。

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()) } }

1 个答案:

答案 0 :(得分:2)

您将test声明为可选Account --- Account?是什么。

鉴于您从未将其初始化为任何内容,它将保持nil并打印nil

要纠正此问题,您需要添加(正如vacawama在评论中所述):

test = Account() // test no longer nil

现在test将是Account的实例,而不是nil

另外一个例子,在操场上:

let test : Account?
print(test) // won't run

let test : Account?
test = Account()
print(test) // prints an instance of Account

此外,您的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"