2016-08-25 2 views
0

Ich entwickle eine iOS App mit Xcode und Swift.Xcode; "Instance member 'string' kann nicht beim Typ 'VC'" beim Speichern in struct verwendet werden

Ich möchte Daten mit NSUserDefaults speichern.

Aber ich bekomme Instance member 'firstString' cannot be used on type 'VC' und Instance member 'secondString' cannot be used on type 'VC' für die Struktur.

Dies ist mein Code:

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

Was mache ich falsch?

+0

Sie keine Eigenschaft in der Klasse Umfang nutzen kann . – Dravidian

+0

Also, was zu tun ist? Was heißt das? (Entschuldigung, ich bin neu im Programmieren.) –

+0

Ich habe den Code aktualisiert. –

Antwort

0

ich endlich eine Lösung gefunden. Ich verwende den folgenden Code Textfelder Inhalt in NSUserDefaults zu speichern:

let loginData = NSUserDefaults.standardUserDefaults() 

loginData.setValue(self.username.text, forKey: "Username") 
loginData.setValue(self.password.text, forKey: "Password") 

ich diesen Code bin mit den Daten von NSUserDefaults zu bekommen:

let retrieveData = NSUserDefaults.standardUserDefaults() 

if let username = retrieveData.stringForKey("Username"){ 
print(username) 
} 
if let password = retrieveData.stringForKey("Password"){ 
print(password) 
} 
0

Sie einen Körper einer Funktion benötigen einen Eigenschaft Wert auf die anderen Eigenschaft in Ihrem Fall (Speicher einen UITextFields Wert auf ein let) und den Grund zu setzen, warum da ist - Eigenschaften selbst starten Initialisierung nur, wenn eine Klasse ausgeführt wird oder das auch in einer zufälligen Reihenfolge ausgeführt, was bedeutet, dass zu der Zeit Ihre Struktur Eigenschaften initialisiert werden, könnte es ein wahrscheinliches Szenario geben, in dem Struktur initialisiert wird, bevor Ihre Textfelder sogar initialisiert werden. Sie müssen also dieses Codeelement an eine Stelle setzen, an der Sie eine Eigenschaft initialisieren, um diese in einer anderen Eigenschaft zu speichern.

struct storeData { 
    let saveFirstString : String? 
    let saveSecondString : String? 
    } 

Und jedes Mal, wenn Sie Ihre Daten speichern möchten hängen Sie einfach auf ein Array vom Typ 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 
     } 
} 
+0

Aceep und upvote diese Antwort, wenn es Ihr Problem löst. :) – Dravidian

+0

Ich bin nicht in der Lage, Ihren zweiten Code zu verwenden. Funktioniert nicht. Ich bekomme nur Fehler. Wo den zweiten Code hinzufügen? –

+0

Um Ihnen zu sagen, wo Sie den Code eingeben, geben Sie mir Ihren gesamten Code der Klasse, auch sagen Sie mir, wenn Sie diese Werte zu diesem struct Eigenschaften speichern möchten .... Geben Sie mir einige grundlegende Informationen ....! – Dravidian

Verwandte Themen