2017-08-25 4 views
0

SwiftのiOS Xcodeプロジェクトを「継承」しました。私はSwiftでプログラミングしたことがなく、以前はXcodeを使っていました。あるユーザーアカウントのプロジェクトを別のユーザーアカウントにコピーし、git repoにチェックインしました。UserDefaults.standard.string()はnilを返す

今、私はこれ(コピー、許可?)が正しく設定を読み取ることができない原因になっている可能性があります。 UserDefaults.standard.string(forKey: "pref_Foo")Settings.Bundle'sRoot.plistにはpref_Fooという識別子がありますが、nilが返されるためです。 このアプリは以前から働いていたので、突然どこから来たのか分かりません。 私はXcodeに慣れていないので、今のところ私はアプリケーションにデバッグしてUserDefaults.standard.string(forKey: "pref_Foo")nilであることを確認しました。

どうすればこの問題に近づけることができますか? ありがとうございました!

EDIT:これは、あなたが最初のアプリを削除して、再度インストールし、検証したコードの下に使用する必要があります... ViewController.swift

override func viewDidLoad() { 
     super.viewDidLoad() 
    loadSettings() 

} 

func loadSettings() 
{ 
    if(UserDefaults.standard.object(forKey: "pref_Foo") == nil) 
    { 
    printf("Error") 
    } 
} 
+0

* userdefaults *データは、デバイスやシミュレータのsandboxディレクトリに保存され、コード内には格納されません。 – Itachi

+0

私はおそらくxcodeがplistファイルを読み取れない場合、それがアプリケーションにコンパイルされないと考えました。 – tzippy

+0

10.3.2と10.3.3の間に何が起こりましたか? – tzippy

答えて

0

私のコードの一部です。あなたが成功するでしょう。

var UserStatus:String { 
    get{ 
     return UserDefaults.standard.object(forKey: "pref_Foo") as? String ?? "0" 
    } 
    set(status){ 
     UserDefaults.standard.set(status, forKey: "pref_Foo") 
     UserDefaults.standard.synchronize() 
    } 
} 

コードの使用は次のとおりです。

if (UserStatus == "pref_Foo"){ 
    self.logoutSuccess() 
} else { 
    self.loginSuccess() 
} 

更新または設定値は、以下のように1行のコードで非常に単純です。

 UserStatus = "pref_Foo" 
関連する問題