투케이2K

18. (ios/swift) 프리퍼런스 preference 반영구적 데이터 저장 실시 - UserDefaults 본문

IOS

18. (ios/swift) 프리퍼런스 preference 반영구적 데이터 저장 실시 - UserDefaults

투케이2K 2021. 10. 23. 09:45

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[소스 코드]

import Foundation


class S_Preference {
    
    //MARK: [클래스 기본 설명]
    /*
    1. UserDefaults 사용해 모바일 데이터 저장 클래스
    2. UserDefaults : Key-Value 형태를 저장
    3. UserDefaults : 앱이 종료되어도 값이 저장되지만, 앱이 삭제되면 저장된 데이터가 사라짐
    4. UserDefaults : Int, Double, Float, String, Bool, Data 등 데이터 타입을 저장 실시
    5. 참고 : 앱이 삭제되어도 데이터가 유지되길 원한다면 Core Data 혹은 KeyChain, NSKeyedArchiever등을 이용한 파일 형태로 저장하는 방법이 있습니다
    */
    
    
    
    // [string 데이터 저장 실시]
    // [호출 방법 : S_Preference().setString(_sKey: "name", _sValue: "twok")]
    func setString(_sKey:String, _sValue:String) {
        UserDefaults.standard.set(_sValue, forKey: _sKey)
        UserDefaults.standard.synchronize() // 동기화 실시
        
        // 전체 key 데이터에 저장 실시
        var allData = UserDefaults.standard.string(forKey: "selectAll") ?? ""
        if allData.contains(_sKey) == false {
            allData = allData + " [\(_sKey)] "
            UserDefaults.standard.set(allData, forKey: "selectAll")
            UserDefaults.standard.synchronize() // 동기화 실시
        }
    }
    
    
    
    // [string 데이터 호출 실시]
    // [호출 방법 : S_Preference().getString(_sKey: "name")]
    func getString(_sKey:String) -> String {
        let returnData = UserDefaults.standard.string(forKey: _sKey) ?? ""
        return returnData
    }
    
    
    
    // [int 데이터 저장 실시]
    // [호출 방법 : S_Preference().setInt(_iKey: "age", _iValue: 28)]
    func setInt(_iKey:String, _iValue:Int) {
        UserDefaults.standard.set(_iValue, forKey: _iKey)
        UserDefaults.standard.synchronize() // 동기화 실시
        
        // 전체 key 데이터에 저장 실시
        var allData = UserDefaults.standard.string(forKey: "selectAll") ?? ""
        if allData.contains(_iKey) == false {
            allData = allData + " [\(_iKey)] "
            UserDefaults.standard.set(allData, forKey: "selectAll")
            UserDefaults.standard.synchronize() // 동기화 실시
        }
    }
    
    
    
    // [int 데이터 호출 실시]
    // [호출 방법 : S_Preference().getInt(_iKey: "age")]
    func getInt(_iKey:String) -> Int {
        let returnData = UserDefaults.standard.integer(forKey: _iKey)
        return returnData
    }
    
    
    
    // [Double 데이터 저장 실시]
    // [호출 방법 : S_Preference().setDouble(_dKey: "age", _dValue: 28.5)]
    func setDouble(_dKey:String, _dValue:Double) {
        UserDefaults.standard.set(_dValue, forKey: _dKey)
        UserDefaults.standard.synchronize() // 동기화 실시
        
        // 전체 key 데이터에 저장 실시
        var allData = UserDefaults.standard.string(forKey: "selectAll") ?? ""
        if allData.contains(_dKey) == false {
            allData = allData + " [\(_dKey)] "
            UserDefaults.standard.set(allData, forKey: "selectAll")
            UserDefaults.standard.synchronize() // 동기화 실시
        }
    }
    
    
    
    // [Double 데이터 호출 실시]
    // [호출 방법 : S_Preference().getDouble(_dKey: "age")]
    func getDouble(_dKey:String) -> Double {
        let returnData = UserDefaults.standard.double(forKey: _dKey)
        return returnData
    }
    
    
    
    // [Bool 데이터 저장 실시]
    // [호출 방법 : S_Preference().setBool(_bKey: "man", _bValue: true)]
    func setBool(_bKey:String, _bValue:Bool) {
        UserDefaults.standard.set(_bValue, forKey: _bKey)
        UserDefaults.standard.synchronize() // 동기화 실시
        
        // 전체 key 데이터에 저장 실시
        var allData = UserDefaults.standard.string(forKey: "selectAll") ?? ""
        if allData.contains(_bKey) == false {
            allData = allData + " [\(_bKey)] "
            UserDefaults.standard.set(allData, forKey: "selectAll")
            UserDefaults.standard.synchronize() // 동기화 실시
        }
    }
    
    
    
    // [Double 데이터 호출 실시]
    // [호출 방법 : S_Preference().getBool(_bKey: "age")]
    func getBool(_bKey:String) -> Bool {
        let returnData = UserDefaults.standard.bool(forKey: _bKey)
        return returnData
    }
    
    
    
    // [특정 key 값 삭제 실시]
    func removeKey(_rkey:String){
        UserDefaults.standard.removeObject(forKey: _rkey)
        UserDefaults.standard.synchronize() // 동기화 실시
        
        // 전체 key 데이터에서 특정 key 삭제 실시
        var allData = UserDefaults.standard.string(forKey: "selectAll") ?? ""
        if allData.contains(_rkey) == true {
            allData = allData.replacingOccurrences(of: " [\(_rkey)] ", with: "")
            UserDefaults.standard.set(allData, forKey: "selectAll")
            UserDefaults.standard.synchronize() // 동기화 실시
        }
    }
    
    
    
    // [저장된 전체 데이터 조회 실시]
    func selectAllKey() -> String{
        let returnData = UserDefaults.standard.string(forKey: "selectAll") ?? ""
        return returnData
    }
    
    
    
    // [저장된 전체 데이터 초기화 실시]
    func removeAll(){
        for key in UserDefaults.standard.dictionaryRepresentation().keys {
            UserDefaults.standard.removeObject(forKey: key.description)
            UserDefaults.standard.synchronize() // 동기화 실시
        }
    }
    
}

[결과 출력]


 

반응형
Comments