2017-09-25 16 views

답변

0

는 아니, 엄격하게에게 StringStaticString를 변환하는 올바른 방법이 아니다; description에 의해 리턴 된 값은 구현 세부 사항입니다.

String을 얻는 가장 간단한 방법은 fileName에 명시 적 유형 주석을 추가하지 않는 것입니다. 그것은 String되는 기본값 것 같이, 그러나

let fileName = #file 
print(type(of: fileName)) // String 

를이 실제 사용 사례에서 수 없습니다 가정, 또 다른 옵션은 순서의 init(decoding:as:) initialiser 'withUTF8Buffer(_:) 방법 String과 함께의'StaticString을 사용하는 것입니다 물론, 당신은이에 대한 자신의 편의 initialiser를 만들 수,

let fileName: StaticString = #file 

let currentFile = fileName.withUTF8Buffer { 
    String(decoding: $0, as: UTF8.self) 
} 

print(currentFile) 

: 그리고 정적 문자열의 UTF-8 코드 단위를 디코딩 할 수

extension String { 

    init(_ staticString: StaticString) { 
     self = staticString.withUTF8Buffer { 
      String(decoding: $0, as: UTF8.self) 
     } 
    } 
} 

let fileName: StaticString = #file 
let currentFile = String(fileName) 

print(currentFile) 

하지만이 전환이 너무 자주 일어나서는 안됩니다.