Notice
Recent Posts
Recent Comments
Link
투케이2K
53. (TWOK/UTIL) [Ios/Objc] S_Preference - 프리퍼런스 관리 클래스 본문
[설 명]
프로그램 : Ios / Objective-C
설 명 : S_Preference - 프리퍼런스 관리 클래스
[소스 코드]
import Foundation
@objc class S_Preference: NSObject {
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. UserDefaults 사용해 모바일 데이터 저장 클래스
// -----------------------------------------
2. UserDefaults : Key-Value 형태를 저장
// -----------------------------------------
3. UserDefaults : 앱이 종료되어도 값이 저장되지만, 앱이 삭제되면 저장된 데이터가 사라짐
// -----------------------------------------
4. UserDefaults : Int, Double, Float, String, Bool, Data 등 데이터 타입을 저장 실시
// -----------------------------------------
5. 참고 : 앱이 삭제되어도 데이터가 유지되길 원한다면 Core Data 혹은 KeyChain, NSKeyedArchiever등을 이용한 파일 형태로 저장하는 방법이 있습니다
// -----------------------------------------
*/
// MARK: - [Objective C 소스 코드에서 호출 방법]
/*
// -----------------------------------------
1. import 선언 실시 : 프로젝트이름-Swift.h 명시 (#import "objectiveProject-Swift.h")
// -----------------------------------------
2. Swift Set 함수 호출 : [[S_Preference shared] setStringWith_sKey:@"S_KEY" _sValue:@"S_VALUE"];
// -----------------------------------------
3. Swift Get 함수 호출 :
NSString *saveData = [[S_Preference shared] getStringWith_sKey:@"S_KEY"];
saveData.description.UTF8String
// -----------------------------------------
4. Swift Void 함수 호출 : [[S_Preference shared] introCreateClear];
// -----------------------------------------
*/
// MARK: - [빠른 로직 찾기 : 주석 로직 찾기]
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
// MARK: - [클래스 이름 설정]
let ACTIVITY_NAME = "S_Preference"
// MARK: - [클래스 싱글톤 설정 실시]
@objc static let shared = S_Preference()
// MARK: - [string 데이터 저장 실시]
// [호출 방법 : S_Preference().setString(_sKey: "name", _sValue: "TWOK")]
@objc 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")]
@objc func getString(_sKey:String) -> String {
let returnData = UserDefaults.standard.string(forKey: _sKey) ?? ""
return returnData
}
// MARK: - [int 데이터 저장 실시]
// [호출 방법 : S_Preference().setInt(_iKey: "age", _iValue: 28)]
@objc 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")]
@objc func getInt(_iKey:String) -> Int {
let returnData = UserDefaults.standard.integer(forKey: _iKey)
return returnData
}
// MARK: - [Double 데이터 저장 실시]
// [호출 방법 : S_Preference().setDouble(_dKey: "age", _dValue: 28.5)]
@objc 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")]
@objc func getDouble(_dKey:String) -> Double {
let returnData = UserDefaults.standard.double(forKey: _dKey)
return returnData
}
// MARK: - [Bool 데이터 저장 실시]
// [호출 방법 : S_Preference().setBool(_bKey: "man", _bValue: true)]
@objc 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")]
@objc func getBool(_bKey:String) -> Bool {
let returnData = UserDefaults.standard.bool(forKey: _bKey)
return returnData
}
// MARK: - [특정 key 값 삭제 실시]
@objc 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: - [저장된 전체 데이터 조회 실시]
@objc func selectAllKey() -> String{
let returnData = UserDefaults.standard.string(forKey: "selectAllTwoK") ?? ""
return returnData
}
// MARK: - [저장된 전체 데이터 초기화 실시]
@objc func removeAll(){
for key in UserDefaults.standard.dictionaryRepresentation().keys {
UserDefaults.standard.removeObject(forKey: key.description)
UserDefaults.standard.synchronize() // 동기화 실시
}
}
// MARK: - [인트로 화면 실행 시 초기화 해야하는 프리퍼런스 데이터 : A_Intro : viewDidLoad]
@objc 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]
@objc 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]
@objc 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]
@objc 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]
@objc func proccessBackgroungClear(){
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> proccessBackgroungClear() :: 프로세스 백그라운드 전환 프리퍼런스 데이터 초기화]")
print("====================================")
print("")
// -----------------------------------------
// [SEARCH FAST] : [프로세스 시작 및 종료 시 프리퍼런스 데이터 초기화]
// -----------------------------------------
}
// MARK: - [메인 웹뷰 리로드 시 초기화 데이터 : A_Main : onResume / SceneDelegate : sceneWillEnterForeground]
@objc 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 유틸파일' 카테고리의 다른 글
Comments