Notice
Recent Posts
Recent Comments
Link
투케이2K
18. (ios/swift) 프리퍼런스 preference 반영구적 데이터 저장 실시 - UserDefaults 본문
[개발 환경 설정]
개발 툴 : 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() // 동기화 실시
}
}
}
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
20. (ios/swift) Package Manager 패키지 매니저 사용해 라이브러리 추가 방법 설명 - xcode 11 버전 (0) | 2021.10.23 |
---|---|
19. (ios/swift) keychain 키 체인 , uuid 사용해 디바이스 고유값 영구 저장 실시 (2) | 2021.10.23 |
17. (ios/swift) url scheme 스키마 데이터 전송 및 받은 데이터 확인 (0) | 2021.10.22 |
16. (ios/swift) 외부 앱 실행 및 앱 스토어 이동 실시 - 스키마 scheme (0) | 2021.10.21 |
15. (ios/swift) 외부 링크 웹 사이트 이동 실시 - URL , SFSafariViewController (0) | 2021.10.20 |
Comments