누군가가 설명해 주실 래요 UserDefalts를 사용하는 방법 : 나는 "동전을 표시 라벨의 변수 동전 = 0을 갖고 싶어아이폰 OS 스위프트 3 -이 작업을 완료하는 데 Swift3에 UserDefaults을 사용하는 방법을 제대로
: 0 "다음에 버튼을 가지고 동전을 1 회 업데이트하면됩니다.
보기/응용 프로그램을 닫고 동전의 양을 적재/더 추가 할 수 있도록이 값을 UserDefault로 저장해야합니다 그들에게.
고맙습니다.
누군가가 설명해 주실 래요 UserDefalts를 사용하는 방법 : 나는 "동전을 표시 라벨의 변수 동전 = 0을 갖고 싶어아이폰 OS 스위프트 3 -이 작업을 완료하는 데 Swift3에 UserDefaults을 사용하는 방법을 제대로
: 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 운영 체제이지만 수동으로 바로 호출하는 것이 일반적입니다. –
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를 사용하여 문제가 있었다 1 단계 : 당신은 당신이 저장하고자하는 데이터와 때를 설정합니다 예를 들어 당신이 버튼을 누른 상태에서 뭔가를 저장하려면 :
의 buttonPressed {
우리를 erdefaults.standard.set (목록, forKey : "anyKeyYouWantHere은") -> 그러나 "목록"변수는
순간에 당신은 그것이 단지
}
처럼 저장됩니다 버튼을 누르면처럼 보인다 두 번째 단계
예를 들어 뷰가로드 될 때 목록을로드하려면 ViewDidLoad에서 변수 "목록"에 앱을 닫기 직전의 값을 다시 지정하면됩니다.
수 있도록 :
목록 = UserDefaults.standard.string은 (forKey는 "theSameKeyFromStep1")
희망이 당신에게 의미가 있습니다! 행운을 빕니다!
이 질문에 많은 부분이 있습니다. 정확하게 당신에게 도움이 필요한 것은 무엇입니까? 'UserDefaults'를 사용하는 수많은 예제가 있습니다. 적어도 참조 문서를 보셨습니까? – rmaddy
https://iosdevcenters.blogspot.com/2016/05/save-data-using-nsuserdefaults-in-swift.html –