2017-04-25 15 views
-5

を使用するために誰かが私は、このタスクを完了するためにSwift3でUserDefaultsを使用する方法を説明してくださいでした:iOSのスウィフト3 - どのように適切にUserDefalts

私は「コインを表示するラベルで= 0変数のコインを持つようにしたい:0ボタンを押して、コインを1つ更新することでタップしたものです。

ビュー/アプリを閉じてコインの残量を追加/追加できるようにするには、これをUserDefaultとして保存する必要があります彼らへ。

ありがとうございました!

+0

この質問には多くの部分があります。正確に何が助けを必要としますか? 'UserDefaults'の使用例は数多くあります。少なくともリファレンスドキュメントを見ましたか? – rmaddy

+0

https://iosdevcenters.blogspot.com/2016/05/save-data-using-nsuserdefaults-in-swifthtml –

答えて

0
var coins = 0 
    let saveData = UserDefaults.standard 
    saveData.set(coins, forKey: "string you want to use to refer to this save data") 
+0

あなたは 'synchronize()'呼び出しを忘れました。 –

+0

私はこれまでにその呼び出しを使用していませんでしたが、ユーザーのデフォルトに関する問題は発生しませんでした。 –

+0

https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize OSを使用していますが、手作業ですぐにその電話をかけるのが一般的な方法です。 –

1

UserDefaultsで作業するときは、プロトコルでラップし、列挙型をキーとして使用することをお勧めします。 coinsCountの列挙ケースと他の例を示します。このような

enum Key: String { 
    case coinsCount 
    case userId 
    case recentSearches 

    static var all: [Key] = [.coinsCount, .userId, .recentSearches] 
} 

protocol PersistenceManagerProtocol { 

    //MARK: - Delete 
    func deleteAll() 
    func deleteValue(for key: Key) 

    //MARK: - Inspection 
    func hasValue(for key: Key) -> Bool 

    //MARK: - Save 
    func save(_ value: Any, for key: Key) 

    //MARK: - Load 
    func load<Value>(with key: Key) -> Value? 
    func loadArray<Value>(with key: Key) -> [Value] 
} 


final class PersistenceManager { 
    fileprivate let userDefaults: UserDefaults 

    init(userDefaults: UserDefaults) { 
     self.userDefaults = userDefaults 
    } 
} 

extension PersistenceManager: PersistenceManagerProtocol { 

    //MARK: - Delete 
    func deleteValue(for key: Key) { 
     userDefaults.setValue(nil, forKey: key.rawValue) 
    } 

    func deleteAll() { 
     for key in Key.all { 
      deleteValue(for: key) 
     } 
    } 

    //MARK: - Inspection 
    func hasValue(for key: Key) -> Bool { 
     return userDefaults.value(forKey: key.rawValue) != nil 
    } 

    //MARK: - Save 
    func save(_ value: Any, for key: Key) { 
     saveValue(value, for: key) 
    } 

    //MARK: - Load 
    func load<Value>(with key: Key) -> Value? { 
     guard let value = userDefaults.value(forKey: key.rawValue) as? Value else { return nil } 
     return value 
    } 

    func loadArray<Value>(with key: Key) -> [Value] { 
     guard let array: [Value] = load(with: key) else { return [] } 
     return array 
    } 
} 

//USAGE 
let persistenceManager: PersistenceManagerProtocol = PersistenceManager(.standard) // using dependency injection, can mock data 

persistenceManager.save(237, for: .coinsCount) 
let coinsCount: Int = persistenceManager.load(with: .coinsCount) 

persistenceManager.save("foobar", for: .userId) 
let userId: String = persistenceManager.load(with: .userId) 

persistenceManager.save(["foo", "bar"], .recentSearches) 
let recentSearches: [String] = persistenceManager.loadArray(with: .recentSearches) 
+0

@ jacob-petersonそれはどうやって行ったのですか? – Sajjon

-1

てみてください何か:あなたがデフォルトに値を設定したいときはいつでも

let savedCoins = defaults.integer(forKey: "userCoins") 

:あなたはデフォルト内の値を取得したいときはいつでも

let defaults = UserDefaults() //Declares user defaults 

let savedCoins = defaults.integer(forKey: "userCoins") //declares a variable for your key 
savedCoins += 1 //add one when your button is clicked 
defaults.set(savedCoins, forKey: "userCoins") //re-saves the new value 

defaults.set(savedCoins, forKey: "userCoins") 

あなたの鍵は同じです!

UserDefaultsは2つの段階で動作します。

+0

私は、あなたが 'savedCoins'を' coins'で使うのに必要な値を設定すると思います。 –

-2

はまた、私はスウィフトには専門家ではまだありませんが、私は、私はそれを理解して何を伝えることができますし、どのようにそれは私の作品、NSUserDefaultsを使用してトラブルがありました第一ステップ:あなたがボタンを押しながら何かを保存したい場合たとえば :あなたは時に保存したいデータを設定

のbuttonPressed {

おerdefaults.standard.set(リスト、forKey:「anyKeyYouWantHereは」) - >しかし、「リスト」は、変数は
瞬間にあなたはそれがちょうどその

}

のように保存されますボタンを押すようになります。 2番目のステップ

たとえば、ビューを読み込んだときにリストを読み込む場合は、ViewDidLoadで変数を "list"に戻して、アプリケーションを終了する直前の値に戻します。

ように:

リスト= UserDefaults.standard.string(forKey: "theSameKeyFromStep1")

希望はこれはあなたに理にかなっています!がんばろう!

関連する問題