Xcode;尝试存储在结构中时获取 "Instance member 'string' cannot be used on type 'VC'"
Xcode; Getting "Instance member 'string' cannot be used on type 'VC'" when trying to store in struct
我正在使用 Xcode 和 Swift 开发一个 iOS 应用程序。
我想用NSUserDefaults
存储数据。
但是我得到了结构的 Instance member 'firstString' cannot be used on type 'VC'
和 Instance member 'secondString' cannot be used on type 'VC'
。
这是我的代码:
import UIKit
class Register: UIViewController, UITextFieldDelegate {
@IBOutlet weak var firstString: UITextField!
@IBOutlet weak var secondString: UITextField!
struct storeLogin {
static let storeFirstString = (firstString.text)
static let storeSecondString = (secondString.text)
}
override func viewDidLoad() {
super.viewDidLoad()
我做错了什么?
在您的情况下,您将需要一个函数体来将属性值设置为另一个 属性(将 UITextFields
值保存为 let
)及其原因是因为 - 属性仅在 class 为 运行 或以随机顺序执行时才开始自行初始化,这意味着在初始化 struct 属性时,可能存在这样一种可能的情况,即结构在您的文本字段初始化之前就已经初始化了。所以你需要把这段代码放在你初始化一个 属性 的地方,以将它们保存到另一个 属性.
struct storeData {
let saveFirstString : String?
let saveSecondString : String?
}
每次你想存储数据时,只需附加到 storeData
类型的数组即可
class myclass: ...{
struct storeData {
let saveFirstString : String?
let saveSecondString : String?
}
var myData = [stroeData]()//Define this variable globally
//Check if your textfield is updated or whenevea you want to store to NSUserDefaults
func loginBtn(){
myData.append(storeData.init(saveFirstString: "dasda", saveSecondString: "dasda")
//Call this line of code whenever you want to store the values in your NSUserDefaults
}
}
我终于找到了解决办法。我正在使用以下代码在 NSUserDefaults 中存储 TextFields 内容:
let loginData = NSUserDefaults.standardUserDefaults()
loginData.setValue(self.username.text, forKey: "Username")
loginData.setValue(self.password.text, forKey: "Password")
我正在使用此代码从 NSUserDefaults 获取数据:
let retrieveData = NSUserDefaults.standardUserDefaults()
if let username = retrieveData.stringForKey("Username"){
print(username)
}
if let password = retrieveData.stringForKey("Password"){
print(password)
}
我正在使用 Xcode 和 Swift 开发一个 iOS 应用程序。
我想用NSUserDefaults
存储数据。
但是我得到了结构的 Instance member 'firstString' cannot be used on type 'VC'
和 Instance member 'secondString' cannot be used on type 'VC'
。
这是我的代码:
import UIKit
class Register: UIViewController, UITextFieldDelegate {
@IBOutlet weak var firstString: UITextField!
@IBOutlet weak var secondString: UITextField!
struct storeLogin {
static let storeFirstString = (firstString.text)
static let storeSecondString = (secondString.text)
}
override func viewDidLoad() {
super.viewDidLoad()
我做错了什么?
在您的情况下,您将需要一个函数体来将属性值设置为另一个 属性(将 UITextFields
值保存为 let
)及其原因是因为 - 属性仅在 class 为 运行 或以随机顺序执行时才开始自行初始化,这意味着在初始化 struct 属性时,可能存在这样一种可能的情况,即结构在您的文本字段初始化之前就已经初始化了。所以你需要把这段代码放在你初始化一个 属性 的地方,以将它们保存到另一个 属性.
struct storeData {
let saveFirstString : String?
let saveSecondString : String?
}
每次你想存储数据时,只需附加到 storeData
class myclass: ...{
struct storeData {
let saveFirstString : String?
let saveSecondString : String?
}
var myData = [stroeData]()//Define this variable globally
//Check if your textfield is updated or whenevea you want to store to NSUserDefaults
func loginBtn(){
myData.append(storeData.init(saveFirstString: "dasda", saveSecondString: "dasda")
//Call this line of code whenever you want to store the values in your NSUserDefaults
}
}
我终于找到了解决办法。我正在使用以下代码在 NSUserDefaults 中存储 TextFields 内容:
let loginData = NSUserDefaults.standardUserDefaults()
loginData.setValue(self.username.text, forKey: "Username")
loginData.setValue(self.password.text, forKey: "Password")
我正在使用此代码从 NSUserDefaults 获取数据:
let retrieveData = NSUserDefaults.standardUserDefaults()
if let username = retrieveData.stringForKey("Username"){
print(username)
}
if let password = retrieveData.stringForKey("Password"){
print(password)
}