如何使用 NSObject 属性

How to use NSObject properties

所以我有一个名为 AccountNSObject,里面有一些变量。我在 class 中添加了 getter 和 setter 方法,但是当我尝试设置值并调用获取它们时,我得到了 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.

要更正此问题,您需要添加(如 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"