반응형
Swift에서 콘솔창에 로그 쉽게 출력하는 방법이다.
보통 로그에 날짜, 파일명, 메소드명, 라인을 작성하려면 아래와 같이 작성한다.
print("\\(Date()) \\(#file.components(separatedBy: "/").last ?? "") \\(#function) \\(#line) 로그 내용")
함수설명
Date() : → 날짜 출력
#file :
파일 출력
→ #file만 사용하는 경우에는 파일이 있는 디렉터리가 모두 출력
components(separateBy:)함수를 사용
.last → 마지막 위치
#fuction
현재 메소드명
#line
현재 라인 출력
위와같이 작성하면 콘솔창에 이렇게 출력된다.
출력결과
#file만 사용 하는 경우
2020-10-11 16:31:33 +0000 /Users/dev/Desktop/workspace/ios/Proj/Proj/MainVC.swift viewDidLoad() 32 로그 내용
#file과 components(separateBy:).last 사용하는 경우
2020-10-11 16:31:33 +0000 MainVC.swift viewDidLoad() 31 로그 내용
별도의 로그 메서드 생성하기
/**
public func 으로 아래와 같이 정의하고 출력하는 형식은 원하는대로 변경하여 사용하면 된다.
#if DEBUG, #endif 를 사용하면 디버그 모드에만 로그가 출력되고 릴리즈시에는 로그가 출력되지 않는다.
*/
/**
- parameters :
- #file : 현재의 파일 디렉토리
- #line : 현재 줄의 위치
- #function : 현재 사용한 함수의 위치
*/
public func Log<T>(_ object: T?, filename: String = #file, line: Int = #line, funcName: String = #function) {
#if DEBUG
if let obj = object {
print("\\(Date()) \\(filename.components(separatedBy: "/").last ?? "")(\\(line)) : \\(funcName) : \\(obj)")
} else {
print("\\(Date()) \\(filename.components(separatedBy: "/").last ?? "")(\\(line)) : \\(funcName) : nil")
}
#endif
}
실제로 사용하는 부분에서는 아래와 같이 호출해서 사용하면 된다.
Log("로그내용")
위와같이 작성하면 콘솔창에 이렇게 출력된다.
2020-10-11 16:31:33 +0000 MainVC.swift(33) : viewDidLoad() : 로그 내용
메소드 사용하여 float <-> String, 현재 클래스 이름 받기
타입캐스팅
선언
init<Subject>(describing instance: Subject)
String( )으로 특정 값을 감싸서 문자열(String)로 만든다.
Swift의 기본 타입들은 모두 이 변환이 가능하며, (사실 인터폴레이션이 가능한 타입들은 다 된다고 보면 된다.
그 외에 이를 통한 직변환이 불가능한 타입들은 String(describing:)을 이용해서 변환하면 된다.
Float -> String
let stringValue = String(describing: floatValue)
반대로 String -> Float
let floatValue = CGFloat(NSString(string: StringValue).floatValue)
String(describing:) 메소드를 사용하여 현재 클래스 이름 받기
*ClassName.Type할 경우 컴파일 에러 발생 -> 특정 클래스의 타입을 얻고 싶은 경우 ClassName.self로 접근
AViewController 파일에서 다음과 같이 코드를 작성해도 되지만,
print(String(describing: AViewController.self))
더 간편하게, 클래스이름을 입력하지 않아도 현재 클래스 이름을 출력 가능
print(String(describing: type(of: self)))
반응형
'모바일앱 > iOS' 카테고리의 다른 글
URLSession에 대하여 알아보기 (0) | 2022.03.23 |
---|---|
MVC의 한계 (0) | 2022.03.22 |
비즈니스 로직 (0) | 2022.03.21 |
TIL 로컬라이징, 써드파티 (0) | 2022.03.19 |
error - Command CompileSwiftSources failed with a nonzero exit code (0) | 2022.03.18 |
디자인패턴 - MVC MVVM (0) | 2022.03.16 |
View의 계층구조 (0) | 2022.03.14 |
error - Extensions must not contain stored properties (0) | 2022.03.13 |