实例成员不能用于类型
Instance member cannot be use on type
@IBAction func saveDetails(sender: AnyObject) {
Person.firstName = firstNameTF.text
Person.lastName = lastNameTF.text
}
上面是我要实现的功能,下面是 class 我正在尝试创建一个实例并将我的文本字段中的数据存储在...我收到错误 "Instance member "firstName" 不能用于 Person" 类型。我几乎确定我的 class 已正确设置和初始化,所以我看不出问题出在哪里?
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
}
}
"Instance member "firstName“不能用于 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 实例以设置其属性:
要么这样做:
@IBAction func saveDetails(sender: AnyObject) {
let p = Person(firstName: firstNameTF.text!, lastName: lastNameTF.text!)
}
或者添加一个不接受参数的 init 方法给你的 Person class
@IBAction func saveDetails(sender: AnyObject) {
let p = Person()
p.firstName = firstNameTF.text!
p.lastName = lastNameTF.text!
}
错误消息说您无法调用 class(类型)Person
.
上的属性
使用给定的初始值设定项
创建一个Person
实例
@IBAction func saveDetails(sender: AnyObject) {
let person = Person(firstName:firstNameTF.text, lastName:lastNameTF.text)
// do something with person
}
@IBAction func saveDetails(sender: AnyObject) {
Person.firstName = firstNameTF.text
Person.lastName = lastNameTF.text
}
上面是我要实现的功能,下面是 class 我正在尝试创建一个实例并将我的文本字段中的数据存储在...我收到错误 "Instance member "firstName" 不能用于 Person" 类型。我几乎确定我的 class 已正确设置和初始化,所以我看不出问题出在哪里?
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
}
}
"Instance member "firstName“不能用于 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 实例以设置其属性: 要么这样做:
@IBAction func saveDetails(sender: AnyObject) {
let p = Person(firstName: firstNameTF.text!, lastName: lastNameTF.text!)
}
或者添加一个不接受参数的 init 方法给你的 Person class
@IBAction func saveDetails(sender: AnyObject) {
let p = Person()
p.firstName = firstNameTF.text!
p.lastName = lastNameTF.text!
}
错误消息说您无法调用 class(类型)Person
.
使用给定的初始值设定项
创建一个Person
实例
@IBAction func saveDetails(sender: AnyObject) {
let person = Person(firstName:firstNameTF.text, lastName:lastNameTF.text)
// do something with person
}