Notice
Recent Posts
Recent Comments
Link
투케이2K
15. (TWOK/UTIL) [Ios/Swift] S_Preference - 프리퍼런스 관리 클래스 본문
[설 명]
프로그램 : Ios / Swift
설 명 : 프리퍼런스 관리 클래스
[소스 코드]
import Foundation
class S_Preference {
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. UserDefaults 사용해 모바일 데이터 저장 클래스
// -----------------------------------------
2. UserDefaults : Key-Value 형태를 저장
// -----------------------------------------
3. UserDefaults : 앱이 종료되어도 값이 저장되지만, 앱이 삭제되면 저장된 데이터가 사라짐
// -----------------------------------------
4. UserDefaults : Int, Double, Float, String, Bool, Data 등 데이터 타입을 저장 실시
// -----------------------------------------
5. 저장된 전체 key 확인 : S_Preference().selectAllKey()
// -----------------------------------------
6. 전체 데이터 삭제 : S_Preference().removeAll()
// -----------------------------------------
7. String 저장 : S_Preference().setString(_sKey: "name", _sValue: "TWOK")
// -----------------------------------------
8. String 호출 : S_Preference().getString(_sKey: "name")
// -----------------------------------------
9. 참고 : 앱이 삭제되어도 데이터가 유지되길 원한다면 Core Data 혹은 KeyChain, NSKeyedArchiever등을 이용한 파일 형태로 저장하는 방법이 있습니다
// -----------------------------------------
*/
// MARK: - [빠른 로직 찾기 : 주석 로직 찾기]
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// MARK: - [클래스 이름 설정]
let ACTIVITY_NAME = "S_Preference"
// MARK: - [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: "selectAllTwoK") ?? ""
if allData.contains(_sKey) == false {
allData = allData + " [\(_sKey)] "
UserDefaults.standard.set(allData, forKey: "selectAllTwoK")
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [string 데이터 호출 실시]
// [호출 방법 : S_Preference().getString(_sKey: "name")]
func getString(_sKey:String) -> String {
let returnData = UserDefaults.standard.string(forKey: _sKey) ?? ""
return returnData
}
// MARK: - [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: "selectAllTwoK") ?? ""
if allData.contains(_iKey) == false {
allData = allData + " [\(_iKey)] "
UserDefaults.standard.set(allData, forKey: "selectAllTwoK")
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [int 데이터 호출 실시]
// [호출 방법 : S_Preference().getInt(_iKey: "age")]
func getInt(_iKey:String) -> Int {
let returnData = UserDefaults.standard.integer(forKey: _iKey)
return returnData
}
// MARK: - [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: "selectAllTwoK") ?? ""
if allData.contains(_dKey) == false {
allData = allData + " [\(_dKey)] "
UserDefaults.standard.set(allData, forKey: "selectAllTwoK")
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [Double 데이터 호출 실시]
// [호출 방법 : S_Preference().getDouble(_dKey: "age")]
func getDouble(_dKey:String) -> Double {
let returnData = UserDefaults.standard.double(forKey: _dKey)
return returnData
}
// MARK: - [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: "selectAllTwoK") ?? ""
if allData.contains(_bKey) == false {
allData = allData + " [\(_bKey)] "
UserDefaults.standard.set(allData, forKey: "selectAllTwoK")
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [Bool 데이터 호출 실시]
// [호출 방법 : S_Preference().getBool(_bKey: "age")]
func getBool(_bKey:String) -> Bool {
let returnData = UserDefaults.standard.bool(forKey: _bKey)
return returnData
}
// MARK: - [특정 key 값 삭제 실시]
func removeKey(_rkey:String){
UserDefaults.standard.removeObject(forKey: _rkey)
UserDefaults.standard.synchronize() // 동기화 실시
// 전체 key 데이터에서 특정 key 삭제 실시
var allData = UserDefaults.standard.string(forKey: "selectAllTwoK") ?? ""
if allData.contains(_rkey) == true {
allData = allData.replacingOccurrences(of: " [\(_rkey)] ", with: "")
UserDefaults.standard.set(allData, forKey: "selectAllTwoK")
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [저장된 전체 데이터 조회 실시]
func selectAllKey() -> String{
let returnData = UserDefaults.standard.string(forKey: "selectAllTwoK") ?? ""
return returnData
}
// MARK: - [저장된 전체 데이터 초기화 실시]
func removeAll(){
for key in UserDefaults.standard.dictionaryRepresentation().keys {
UserDefaults.standard.removeObject(forKey: key.description)
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [인트로 화면 실행 시 초기화 해야하는 프리퍼런스 데이터 : A_Intro : viewDidLoad]
func introCreateClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> introCreateClear() :: 인트로 화면 실행 시 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// [메인 웹뷰 포그라운드 푸시 알림 JS 전달]
S_Preference().setString(_sKey: S_FinalData.PRE_ROOT_ACTIVITY, _sValue: "")
// -----------------------------------------
// [웹뷰 리로드 관련 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_WEBVIEW_RELOAD, _sValue: "")
// -----------------------------------------
// [메인 웹뷰 포그라운드 및 백그라운드 전환 시간]
S_Preference().setString(_sKey: S_FinalData.PRE_WV_RESUME_TIME, _sValue: "")
S_Preference().setString(_sKey: S_FinalData.PRE_WV_PAUSE_TIME, _sValue: "")
// -----------------------------------------
}
// MARK: - [앱 종료 시 초기화 해야하는 프리퍼런스 데이터 : A_Main : viewDidDisappear]
func mainFinishClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> mainFinishClear() :: 앱 종료 시 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// [메인 웹뷰 포그라운드 푸시 알림 JS 전달]
S_Preference().setString(_sKey: S_FinalData.PRE_ROOT_ACTIVITY, _sValue: "")
// -----------------------------------------
}
// MARK: - [프로세스 시작 시 초기화 해야하는 프리퍼런스 데이터 : AppDelegate : didFinishLaunchingWithOptions]
func proccessCreateClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> proccessCreateClear() :: 프로세스 시작 시 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// [로그인 : 스키마 데이터 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_SCHEME_DATA_LOGIN, _sValue: "")
// -----------------------------------------
// [일반 : 스키마 데이터 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_SCHEME_DATA_CALL, _sValue: "")
// -----------------------------------------
// [메인 웹뷰 포그라운드 푸시 알림 JS 전달]
S_Preference().setString(_sKey: S_FinalData.PRE_ROOT_ACTIVITY, _sValue: "")
// -----------------------------------------
// [웹뷰 리로드 관련 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_WEBVIEW_RELOAD, _sValue: "")
// -----------------------------------------
// [메인 웹뷰 포그라운드 및 백그라운드 전환 시간]
S_Preference().setString(_sKey: S_FinalData.PRE_WV_RESUME_TIME, _sValue: "")
S_Preference().setString(_sKey: S_FinalData.PRE_WV_PAUSE_TIME, _sValue: "")
// -----------------------------------------
}
// MARK: - [프로세스 종료 시 초기화 해야하는 프리퍼런스 데이터 : AppDelegate : applicationWillTerminate]
func proccessFinishClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> proccessFinishClear() :: 프로세스 종료 시 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// [로그인 : 스키마 데이터 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_SCHEME_DATA_LOGIN, _sValue: "")
// -----------------------------------------
// [일반 : 스키마 데이터 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_SCHEME_DATA_CALL, _sValue: "")
// -----------------------------------------
// [메인 웹뷰 포그라운드 푸시 알림 JS 전달]
S_Preference().setString(_sKey: S_FinalData.PRE_ROOT_ACTIVITY, _sValue: "")
// -----------------------------------------
// [웹뷰 리로드 관련 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_WEBVIEW_RELOAD, _sValue: "")
// -----------------------------------------
// [메인 웹뷰 포그라운드 및 백그라운드 전환 시간]
S_Preference().setString(_sKey: S_FinalData.PRE_WV_RESUME_TIME, _sValue: "")
S_Preference().setString(_sKey: S_FinalData.PRE_WV_PAUSE_TIME, _sValue: "")
// -----------------------------------------
}
// MARK: - [프로세스 백그라운드 전환 시 프리퍼런스 초기화 : SceneDelegate : sceneWillResignActive]
func proccessBackgroungClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> proccessBackgroungClear() :: 프로세스 백그라운드 전환 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
}
// MARK: - [메인 웹뷰 리로드 시 초기화 데이터 : A_Main : onResume / SceneDelegate : sceneWillEnterForeground]
func webViewReloadClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> webViewReloadClear() :: 웹뷰 리로드 수행 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// [로그인 : 스키마 데이터 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_SCHEME_DATA_LOGIN, _sValue: "")
// -----------------------------------------
// [일반 : 스키마 데이터 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_SCHEME_DATA_CALL, _sValue: "")
// -----------------------------------------
// [웹뷰 리로드 관련 초기화 실시]
S_Preference().setString(_sKey: S_FinalData.PRE_WEBVIEW_RELOAD, _sValue: "")
// -----------------------------------------
// [메인 웹뷰 포그라운드 및 백그라운드 전환 시간]
S_Preference().setString(_sKey: S_FinalData.PRE_WV_RESUME_TIME, _sValue: "")
S_Preference().setString(_sKey: S_FinalData.PRE_WV_PAUSE_TIME, _sValue: "")
// -----------------------------------------
}
} // [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
17. (TWOK/UTIL) [Ios/Swift] C_StateCheck - 네트워크 연결 상태 (0) | 2022.03.24 |
---|---|
16. (TWOK/UTIL) [Ios/Swift] S_FinalData - 상수 데이터 관리 클래스 (0) | 2022.03.24 |
14. (TWOK/UTIL) [Android/Java] A_Main - 웹뷰 로드 화면 관련 클래스 정리 (0) | 2022.03.23 |
13. (TWOK/UTIL) [Android/Java] A_Intro - 로딩 인트로 화면 관련 클래스 정리 (0) | 2022.03.22 |
12. (TWOK/UTIL) [Android/Java] S_Application - 애플리케이션 시작 프로세스 관리 실시 (0) | 2022.03.22 |
Comments