Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 实例成员不能用于类型_Xcode_Swift_Swift2_Xcode7 - Fatal编程技术网

Xcode 实例成员不能用于类型

Xcode 实例成员不能用于类型,xcode,swift,swift2,xcode7,Xcode,Swift,Swift2,Xcode7,上面是我试图实现的函数,下面是我试图创建实例并将文本字段中的数据存储在中的类。。。我得到的错误实例成员名不能用于Person类型。我几乎可以肯定,我的课程设置和初始化正确,所以我看不出问题出在哪里 @IBAction func saveDetails(sender: AnyObject) { Person.firstName = firstNameTF.text Person.lastName = lastNameTF.text } 实例成员名不能用于类型Per

上面是我试图实现的函数,下面是我试图创建实例并将文本字段中的数据存储在中的类。。。我得到的错误实例成员名不能用于Person类型。我几乎可以肯定,我的课程设置和初始化正确,所以我看不出问题出在哪里

@IBAction func saveDetails(sender: AnyObject) {
        Person.firstName = firstNameTF.text
        Person.lastName = lastNameTF.text
}

实例成员名不能用于类型Person,这是一个完美的解释

class Person {
    var firstName : String = ""
    var middleName : String? = nil
    var lastName : String = ""
    var yearOfBirth : Int? = nil
    var age : Int! {
        get {
            guard let _ = yearOfBirth else {
                return nil
            }
            return currentYear - yearOfBirth!
        }
        set {
            yearOfBirth = currentYear - newValue
        }
    }

    init(firstName: String, lastName: String, yearOfBirth: Int? = nil, middleName: String? = nil){
        self.firstName = firstName
        self.lastName = lastName
        self.yearOfBirth = yearOfBirth
        self.middleName = middleName
    }
    convenience init(firstName: String, lastName: String, age: Int, middleName: String? = nil) {
        self.init(firstName: firstName, lastName: lastName, yearOfBirth: nil, middleName: middleName)
        self.age = age
    }

}

实例成员名不能用于类型Person,这是一个完美的解释

class Person {
    var firstName : String = ""
    var middleName : String? = nil
    var lastName : String = ""
    var yearOfBirth : Int? = nil
    var age : Int! {
        get {
            guard let _ = yearOfBirth else {
                return nil
            }
            return currentYear - yearOfBirth!
        }
        set {
            yearOfBirth = currentYear - newValue
        }
    }

    init(firstName: String, lastName: String, yearOfBirth: Int? = nil, middleName: String? = nil){
        self.firstName = firstName
        self.lastName = lastName
        self.yearOfBirth = yearOfBirth
        self.middleName = middleName
    }
    convenience init(firstName: String, lastName: String, age: Int, middleName: String? = nil) {
        self.init(firstName: firstName, lastName: lastName, yearOfBirth: nil, middleName: middleName)
        self.age = age
    }

}

您应该创建Person的实例以设置其属性: 要么这样做:

class C {
    var s: String = ""
    static var s1: String = ""
}


C.s1 = "alfa"
//C.s = "alfa" //  error: instance member 's' cannot be used on type 'C'
let c0 = C()
c0.s = "beta"
//c0.s1 = "beta" // error: static member 's1' cannot be used on instance of type 'C'
或者添加一个不接受Person类参数的init方法

@IBAction func saveDetails(sender: AnyObject) {
    let p = Person(firstName: firstNameTF.text!, lastName: lastNameTF.text!)
}

您应该创建Person的实例以设置其属性: 要么这样做:

class C {
    var s: String = ""
    static var s1: String = ""
}


C.s1 = "alfa"
//C.s = "alfa" //  error: instance member 's' cannot be used on type 'C'
let c0 = C()
c0.s = "beta"
//c0.s1 = "beta" // error: static member 's1' cannot be used on instance of type 'C'
或者添加一个不接受Person类参数的init方法

@IBAction func saveDetails(sender: AnyObject) {
    let p = Person(firstName: firstNameTF.text!, lastName: lastNameTF.text!)
}

错误消息表示无法调用类类型Person的属性

使用给定的初始值设定项创建Person实例

@IBAction func saveDetails(sender: AnyObject) {
    let p = Person()
    p.firstName = firstNameTF.text!
    p.lastName = lastNameTF.text!
}

错误消息表示无法调用类类型Person的属性

使用给定的初始值设定项创建Person实例

@IBAction func saveDetails(sender: AnyObject) {
    let p = Person()
    p.firstName = firstNameTF.text!
    p.lastName = lastNameTF.text!
}

这给了我另一个错误,不能在没有参数的情况下为“Person”调用初始化器类型这给了我另一个错误,不能在没有参数的情况下为“Person”调用初始化器类型我不想听起来粗鲁,但我认为您不理解类和对象之间的区别,这是OOP的一个非常重要的特性。我建议你买本书,开始阅读OOP的基础知识。我不想听起来粗鲁,但我认为你不理解类和对象之间的区别,这是OOP的一个非常重要的特性。我建议你买本书,开始阅读OOP的基础知识。谢谢,这解决了我的问题谢谢,这解决了我的问题