2017-04-25 6 views
-5

누군가가 설명해 주실 래요 UserDefalts를 사용하는 방법 : 나는 "동전을 표시 라벨의 변수 동전 = 0을 갖고 싶어아이폰 OS 스위프트 3 -이 작업을 완료하는 데 Swift3에 UserDefaults을 사용하는 방법을 제대로

: 0 "다음에 버튼을 가지고 동전을 1 회 업데이트하면됩니다.

보기/응용 프로그램을 닫고 동전의 양을 적재/더 추가 할 수 있도록이 값을 UserDefault로 저장해야합니다 그들에게.

고맙습니다.

+0

이 질문에 많은 부분이 있습니다. 정확하게 당신에게 도움이 필요한 것은 무엇입니까? 'UserDefaults'를 사용하는 수많은 예제가 있습니다. 적어도 참조 문서를 보셨습니까? – rmaddy

+0

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

답변

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 운영 체제이지만 수동으로 바로 호출하는 것이 일반적입니다. –

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를 사용하여 문제가 있었다 1 단계 : 당신은 당신이 저장하고자하는 데이터와 때를 설정합니다 예를 들어 당신이 버튼을 누른 상태에서 뭔가를 저장하려면 :

의 buttonPressed {

우리를 erdefaults.standard.set (목록, forKey : "anyKeyYouWantHere은") -> 그러나 "목록"변수는
순간에 당신은 그것이 단지

}

처럼 저장됩니다 버튼을 누르면처럼 보인다 두 번째 단계

예를 들어 뷰가로드 될 때 목록을로드하려면 ViewDidLoad에서 변수 "목록"에 앱을 닫기 직전의 값을 다시 지정하면됩니다.

수 있도록 :

목록 = UserDefaults.standard.string은 (forKey는 "theSameKeyFromStep1")

희망이 당신에게 의미가 있습니다! 행운을 빕니다!