투케이2K

34. (Objective-C/objc) Objective C 소스 코드에서 Swift 소스 코드 사용 방법 본문

Objective-C

34. (Objective-C/objc) Objective C 소스 코드에서 Swift 소스 코드 사용 방법

투케이2K 2022. 6. 23. 13:16

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : OBJECTIVE-C

 

[방법 설명]

 

[Objective C : 소스 코드]

#import "ViewController.h"


// MARK: - [프로젝트-Swift.h import 명시]
#import "objectiveProject-Swift.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    
    // MARK: [Swift set 함수 호출 수행 실시]
    [[S_Preference shared] setStringWith_sKey:@"S_KEY" _sValue:@"S_VALUE"];
    
    
    // MARK: [Swift get 함수 호출 수행 실시]
    NSString *saveData = [[S_Preference shared] getStringWith_sKey:@"S_KEY"];
    printf("\n");
    printf("==================================== \n");
    printf("[saveData :: %s] \n", saveData.description.UTF8String);
    printf("==================================== \n");
    printf("\n");
    
    
    // MARK: [상수 데이터 관리 클래스에서 데이터 호출 실시]
    NSString *finalData = [S_FinalData WV_LOAD_MAIN_ENZ_URL];
    printf("\n");
    printf("==================================== \n");
    printf("[finalData :: %s] \n", finalData.description.UTF8String);
    printf("==================================== \n");
    printf("\n");
}


@end
 

[Swift : 소스 코드]

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: - [빠른 로직 찾기 : 주석 로직 찾기]
    // -----------------------------------------
    // [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
    }
    
    
} // [클래스 종료]
 

[Swift : 소스 코드]

import Foundation

@objc class S_FinalData: NSObject {
    
    
    // MARK: - [클래스 설명]
    /*
    // -----------------------------------------
    1. 상수 데이터 관리 클래스
    // -----------------------------------------
    */
    
    
    
    
    
    // MARK: - [클래스 싱글톤 설정 실시]
    @objc static let shared = S_FinalData()





    // MARK: - [모바일 웹뷰 주소 로드 정의 실시]
    @objc static let WV_LOAD_MAIN_ENZ_URL = "https://www.naver.com" // [메인 : 운영 주소]
    @objc static let WV_LOAD_MAIN_DEV_URL = "https://www.google.com" // [메인 : 개발 주소]

    @objc static let WV_LOAD_NAVER_URL = "https://www.naver.com" // [내부 링크 : 네이버]
    

} // [클래스 종료]
 

[결과 출력]


 
반응형
Comments