2016-10-03 13 views
16

신속한 답변. 난 그냥 기본을 배우고 때 여기'NSLog'를 사용할 수 없습니다. 신속한 Variadic 기능을 사용할 수 없습니다.

NSLog에서이 오류가 발생했습니다 내 코드입니다 :

import UIKit 

class ViewController: UIViewController { 

    var myString: NSString? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     myString = "himanth" 
     print(myString) 
     NSLog("%@" , myString) 
     // Do any additional ssetup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

나는이

var myString: NSString! 

같은 myString를 선언하고있는 경우는 NSLog를 사용하는 괜찮습니다 콘솔도 볼 수 있습니다.

그러나 NSLog에서이 일으키는 문제

var myString: NSString? 

그것은 반영과 같은 문자열을 선언하고 오류를 보여주는.

무엇이 문제입니까?

답변

14

var myString: NSString?을 옵션으로 선언하면 NSLog에 전달하기 전에 값이 있는지 확인해야합니다.

그러면 다음과 같이 할 수 있습니다. NSLog("%@" , myString!). myString이 전무이며 !을 넣으면 프로그램이 충돌합니다 그리고 당신은

fatal error: unexpectedly found nil while unwrapping an Optional value. 

을 얻을 것이다 그러나이 값이있는 경우 프로그램은 정상적으로 계속 내가 myString = "Test"을 쓴

2016-10-03 10:26:25.077 Swift3.0[65214:1579363] Test 

을 인쇄합니다.

+1

'NSLog ("% @", myString ?? "")를 사용하는 것이 더 낫겠습니까? – Grimxn

+0

그건 절대적으로 대안의 @Grimxn입니다. –

5

NSLog() 스위프트 옵션을 인쇄 할 수 없습니다.

let optional: String? 
NSLog("%@", optional) // 'NSLog' is unavailable: Variadic function is unavailable 

let nonOptional: String 
NSLog("%@", nonOptional) // Ok! 

NSLog("%@", optional ?? "value-if-nil") // Ok! 

대신 비 선택적 값을 NSLog()으로 전달하여 수정하십시오.

관련 문제