を使用するために誰かが私は、このタスクを完了するためにSwift3でUserDefaultsを使用する方法を説明してくださいでした:iOSのスウィフト3 - どのように適切にUserDefalts
私は「コインを表示するラベルで= 0変数のコインを持つようにしたい:0ボタンを押して、コインを1つ更新することでタップしたものです。
ビュー/アプリを閉じてコインの残量を追加/追加できるようにするには、これをUserDefaultとして保存する必要があります彼らへ。
ありがとうございました!
を使用するために誰かが私は、このタスクを完了するためにSwift3でUserDefaultsを使用する方法を説明してくださいでした:iOSのスウィフト3 - どのように適切にUserDefalts
私は「コインを表示するラベルで= 0変数のコインを持つようにしたい:0ボタンを押して、コインを1つ更新することでタップしたものです。
ビュー/アプリを閉じてコインの残量を追加/追加できるようにするには、これをUserDefaultとして保存する必要があります彼らへ。
ありがとうございました!
var coins = 0
let saveData = UserDefaults.standard
saveData.set(coins, forKey: "string you want to use to refer to this save data")
あなたは 'synchronize()'呼び出しを忘れました。 –
私はこれまでにその呼び出しを使用していませんでしたが、ユーザーのデフォルトに関する問題は発生しませんでした。 –
https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize OSを使用していますが、手作業ですぐにその電話をかけるのが一般的な方法です。 –
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)
@ jacob-petersonそれはどうやって行ったのですか? – Sajjon
てみてください何か:あなたがデフォルトに値を設定したいときはいつでも
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つの段階で動作します。
私は、あなたが 'savedCoins'を' coins'で使うのに必要な値を設定すると思います。 –
はまた、私はスウィフトには専門家ではまだありませんが、私は、私はそれを理解して何を伝えることができますし、どのようにそれは私の作品、NSUserDefaultsを使用してトラブルがありました第一ステップ:あなたがボタンを押しながら何かを保存したい場合たとえば :あなたは時に保存したいデータを設定
のbuttonPressed {
おerdefaults.standard.set(リスト、forKey:「anyKeyYouWantHereは」) - >しかし、「リスト」は、変数は
瞬間にあなたはそれがちょうどその
}
のように保存されますボタンを押すようになります。 2番目のステップ
たとえば、ビューを読み込んだときにリストを読み込む場合は、ViewDidLoadで変数を "list"に戻して、アプリケーションを終了する直前の値に戻します。
ように:
リスト= UserDefaults.standard.string(forKey: "theSameKeyFromStep1")
希望はこれはあなたに理にかなっています!がんばろう!
この質問には多くの部分があります。正確に何が助けを必要としますか? 'UserDefaults'の使用例は数多くあります。少なくともリファレンスドキュメントを見ましたか? – rmaddy
https://iosdevcenters.blogspot.com/2016/05/save-data-using-nsuserdefaults-in-swifthtml –