2017-03-23 4 views
3

이것이 가능한지 확실하지 않습니다. 하지만 이렇게하고 싶습니다.스위프트 : 지역 변수 삽입을 사용하는 동적 문자열

let version = "2.0.1" 
let year = 2017 
let version = "Build \(version), \(year)" 

그러나 현지화 된 파일에서 버전 문자열을 가져 오려고합니다. 즉.

let version = "2.0.1" 
let year = 2017 
let versionTemplate = NSLocalizedString("version.template", comment:"") 
let version = ???? // Something done with versionTemplate 

가 나는 NSExpression를 사용하여 보았다하지만이 방법이나 할 수 있다면 그것은 분명 아니다했습니다.

누구나 가능합니까?

+0

관련 항목 : [Swift에서 지역화 된 문자열의 형식을 지정하는 방법?] (http://stackoverflow.com/questions/35316655/how-to-format-localised-strings-in-swift). –

답변

4

모두 가능

리터럴이 아닌 문자열 초기화 프로그램을 사용하려고합니다. 당신의 localizable.strings 파일에서

let version = "2.0.1" 
let year = 2017 
let versionTemplate = String(format: NSLocalizedString("version.template", comment: ""), arguments: [version, year]) 
// output: Build 2.0.1, 2017 

이 같은 템플릿이 필요합니다 :

"version.template" = "Build %@, %ld" 

는 현재 형식 지정자의 다양한 사용할 수 있습니다. 모든 가능성을 문서에서 확인하십시오. https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265-SW1

+5

''Build % @, % ld "'를 사용하면 충돌이 발생합니다. :) –

+0

멋진 점. –

+1

업데이트 됨 감사합니다. 그것은 목표 C 방법입니다. 나는 내가 그 일을 어떻게하는지 이미 알았어 야했다. 그러나 Swift가 문자열 보간법에 더 가까운 방식을 찾고 싶었습니다. 주위를 읽는 것으로부터, Swift는 어떤 종류의 기능을 제공하기보다는 구문적인 설탕을 사용하는 것처럼 보입니다. 그래서 저는 옛날 방식으로 가야 할 것입니다 :-) Swift가 실제로하는 것처럼 보이는'String (stringWithInterpolation :)'등을 들여다 보았습니다. – drekka