1. 사전 프로젝트 코드 세팅하고 오기
https://growingsaja.tistory.com/869
2. URLHost 인코딩, 디코딩하기 - 소스코드 수정
// vim ViewController.m
// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"
// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/
// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
// 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
[super viewDidLoad];
NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
// MARK: [프로토콜 메소드 호출 실시]
}
// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"[ViewController >> viewWillAppear() :: 뷰 로드 완료]");
}
// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"[ViewController >> viewDidAppear() :: 뷰 화면 표시]");
// [테스트 메인 함수 호출]
[self testMain];
}
// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"[ViewController >> viewWillDisappear() :: 뷰 정지 상태]");
}
// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"[ViewController >> viewDidDisappear() :: 뷰 종료 상태]");
}
// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");
// [초기 문자열 데이터 선언]
NSString *strData = @"/test안녕.coh@1ㅎA";
// [URL 인코딩 수행 실시 : 호스트 방식 설정]
NSString *encodeData = [strData stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
// [URL 디코딩 수행 실시]
NSString *decodeData = [encodeData stringByRemovingPercentEncoding];
// [결과 출력 실시]
NSLog(@"##############################################");
NSLog(@"[원본 :: %@]", strData);
NSLog(@"[URL 인코딩 :: %@]", encodeData);
NSLog(@"[URL 디코딩 :: %@]", decodeData);
// [초기 문자열 데이터 선언]
NSString *strData_eng = @"https://growingsaja.tistory.com/?type=post&returnURL=%4Rmanage%8Uposts%3G";
// [URL 인코딩 수행 실시 : 호스트 방식 설정]
NSString *encodeData_eng = [strData_eng stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
// [URL 디코딩 수행 실시]
NSString *decodeData_eng = [encodeData_eng stringByRemovingPercentEncoding];
// [결과 출력 실시]
NSLog(@"##############################################");
NSLog(@"[원본 :: %s]", strData_eng.description.UTF8String);
NSLog(@"[URL 인코딩 :: %s]", encodeData_eng.description.UTF8String);
NSLog(@"[URL 디코딩 :: %s]", decodeData_eng.description.UTF8String);
}
// -----------------------------------------
@end
// -----------------------------------------
3. URLHost 인코딩, 디코딩하기 - 결과 예시
4. base64 인코딩, 디코딩하기 - 소스코드 수정
// vim ViewController.m
// ViewController.h 파일을 import하여 해당 클래스의 정의를 가져옵니다.
#import "ViewController.h"
// MARK: - [헤더 [선언부] 호출]
@interface ViewController ()
@end
@implementation ViewController
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. ViewController (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/
// MARK: - [뷰 로드 실시]
// 메서드를 구현합니다. 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출되는 메서드입니다.
- (void)viewDidLoad {
// 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출합니다.
[super viewDidLoad];
NSLog(@"[ViewController >> viewDidLoad() :: 뷰 로드 실시]");
// MARK: [프로토콜 메소드 호출 실시]
}
// MARK: - [뷰 로드 완료]
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"[ViewController >> viewWillAppear() :: 뷰 로드 완료]");
}
// MARK: - [뷰 화면 표시]
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"[ViewController >> viewDidAppear() :: 뷰 화면 표시]");
// [테스트 메인 함수 호출]
[self testMain];
}
// MARK: - [뷰 정지 상태]
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"[ViewController >> viewWillDisappear() :: 뷰 정지 상태]");
}
// MARK: - [뷰 종료 상태]
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"[ViewController >> viewDidDisappear() :: 뷰 종료 상태]");
}
// MARK: - [헤더 파일에 정의 없이 : void 메소드 구현]
- (void)testMain {
NSLog(@"[ViewController >> testMain() :: 테스트 메소드 수행]");
// [초기 문자열 데이터 선언 실시]
NSString *strData = @"Hello~16";
NSLog(@"[strData [원본] : %s]", strData.description.UTF8String);
// [base64 인코딩 수행 실시]
NSData *encodeData = [strData dataUsingEncoding:NSUTF8StringEncoding];
NSString *encodeString = [encodeData base64EncodedStringWithOptions:0];
NSLog(@"[encodeString [base64 인코딩] : %s]", encodeString.description.UTF8String);
// [base64 디코딩 수행 실시]
NSData *decodeData = [[NSData alloc]initWithBase64EncodedString:encodeString options:0];
NSString *decodeString = [[NSString alloc] initWithData:decodeData encoding:NSUTF8StringEncoding];
NSLog(@"[decodeString [base64 디코딩] : %s]", decodeString.description.UTF8String);
}
// -----------------------------------------
@end
// -----------------------------------------
5. base64 인코딩, 디코딩하기 - 결과 예시
'Development > iOS' 카테고리의 다른 글
[Objective-C] 입문하기 - 14 : 날짜 데이터 활용 및 타이머 구현 실습 (0) | 2023.06.27 |
---|---|
[Objective-C] 입문하기 - 13 : init 클래스 생성자 초기화 및 인스턴스 초기 데이터와 함께 생성해 사용하기 (0) | 2023.06.27 |
[Objective-C] 입문하기 - 11 : String을 활용한 소스코드 - 응용 (0) | 2023.06.26 |
[Objective-C] 입문하기 - 10 : String을 활용한 소스코드 - 기본 (0) | 2023.06.23 |
[Objective-C] 입문하기 - 09 : json, dictionary 데이터 변환 및 data의 type을 확인하고 각 type에 따라 다르게 처리해주는 코드 실습 (0) | 2023.06.23 |