2014-10-22 5 views
2
let timeFont = [NSFontAttributeName:UIFont(name: "Voyage", size: 20.0)] 
var attrString3 = NSAttributedString("(Time)", attributes : timeFont); // <--- compiler error "Extra argument in call" 

전에 일,하지만 지금은 그것이 더 이상 작동하지 않고 내가 작업을 다시받을 필요가 무엇인지 알아낼 수 없습니다 6.1 엑스 코드로 업그레이드 한 것이다. 그것은 추가적인 논쟁이 있다고 말합니다. 그러나 그것은 정확하지 않습니다. 나는 그것이 새로운 failable initializers와 관련이 있다고 믿지만, 시도한 모든 것은 작동하지 않는다.NSFontAttributedString는 엑스 코드 6.1이 코드는 엑스 코드 6.0에서 근무

답변

5

Xcode 6.1에는 실패 할 수있는 생성자를 지원하는 Swift 1.1이 함께 제공됩니다. UIFont 초기화가 실패하고 nil을 반환 할 수 있습니다. NSAttributedString를 만들 때 또한 string:를 사용

if let font = UIFont(name: "Voyage", size: 20.0) { 
    let timeFont = [NSFontAttributeName:font] 
    var attrString3 = NSAttributedString(string: "(Time)", attributes : timeFont) 
} 
+0

덕분에, 그 일을! – JTerry

6

이 코드를 컴파일 실패 두 가지 이유가 있습니다

  • 지금 사용하려는 NSAttributedString의 초기화가 지금 사용하고있는 string 매개 변수
  • UIFont 초기화의 명시 적 표시가 필요 속성 사전에 전달하기 전에 풀어야하는 선택 사항 (즉, UIFont?)을 반환합니다.

대신을 시도해보십시오

let font = UIFont(name: "Voyage", size: 20.0) ?? UIFont.systemFontOfSize(20.0) 
let attrs = [NSFontAttributeName : font] 
var attrString3 = NSAttributedString(string: "(Time)", attributes: attrs) 

주 새로운 병합 연산자??의 사용을. 이 옵션은 Voyage 글꼴을 선택 취소하지만 Voyage를 사용할 수없는 경우 시스템 글꼴로 돌아갑니다 (놀이터에서 나타나는 것처럼 보임). 이렇게하면 원하는 글꼴을로드 할 수없는 경우에도 상관없이 속성 문자열을 얻을 수 있습니다.