Xcode Playground에서 Platform으로 분기하기

이것은 Swift 애호회 Advent Calendar 2017 10 일째 게시물입니다.
어제 9일째는 @kamui_project씨의 Lottie 애니메이션을 TableViewCell 내에서 움직여 보았습니다.이었습니다.

TL;DR



Playground상에서도 Compiler Control Statements 을 사용할 수 있다는 이야기.
특히 사용하고 싶지 않지만 ...

#if os(iOS)
    print("iOS")
#elseif os(macOS)
    print("macOS")
#elseif os(OSX) // macOSの時と一緒
    print("OSX")
#elseif os(tvOS)
    print("tvOS")
#endif


Playground의 Platform



새로운 Playground를 만들 때




기존 파일의 경우
File Inspector 에서 변경 가능


Compiler Control Statements



Compiler Control Statements는 컴파일 타임에 평가되며 조건외 행은 무시되므로 다음과 같이 사용할 수 있습니다.

#if os(iOS)
    import UIKit
    let color: UIColor = #colorLiteral(red: 1, green: 0.1491314173, blue: 0, alpha: 1)
#elseif os(macOS)
    import AppKit
    let color: NSColor = #colorLiteral(red: 1, green: 0.1491314173, blue: 0, alpha: 1)
#elseif os(tvOS)
#endif

print(color)
//
//  Platform: iOS
//  UIExtendedSRGBColorSpace 1 0.149131 0 1
//
//  Platform: macOS
//  NSCustomColorSpace sRGB IEC61966-2.1 colorspace 1 0.149131 0 1
//
//  Platform: tvOS
//  Playground execution failed:
//
//  error: Qiita.playground:15:7: error: use of unresolved identifier 'color'
//  print(color)
//


요약



공부회의 간친회에서 @takasekㅎㅎㅎ 과 이야기했을 때 발견했습니다.
여러가지 생각해 보았지만, 역시 Playground에서 사용하고 싶은 타이밍은 생각하지 않는다...

좋은 웹페이지 즐겨찾기