web-dev-qa-db-ja.com

「NSLog」は使用できません:swift

私はSwiftが初めてです。基本を学んでいるとき、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.
    }


}

myStringをこのように宣言している場合

var myString: NSString!

NSLogを使用しても問題ありません。コンソールも表示できます。

しかし、問題を引き起こすこのような文字列を宣言する

var myString: NSString?

NSLogに反映され、エラーが表示されます。

その問題は何ですか?

25
Himanth

_var myString: NSString?_をオプションとして宣言する場合、NSLogに渡す前に値があることを確認する必要があります。

したがって、NSLog("%@" , myString!)のようにこれを行うことができます。 myStringがnilで、_!_を入力すると、プログラムがクラッシュし、

_fatal error: unexpectedly found nil while unwrapping an Optional value.
_

ただし、値がある場合、プログラムは通常どおり続行され、出力されます

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

_myString = "Test"_と書きました。

19
Rashwan L

NSLog()は印刷できませんSwiftオプション。

_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()にオプションではない値を渡すことで修正します。

注意:

print()can print Swiftオプション。

13
pkamb

同じ問題があり、受け入れられた答えは役に立たない。

func handleSomeResp(_ response: DataResponse<Any>) {
    NSLog("handle error: %@", response)
}

ご覧のとおり、オプションについては何もありません。 NSLogでは不明な<Any>および任意のタイプが原因であると思いますが、同様の問題に注意してください here :。 NSLogのジェネリックを解析するソリューションがある場合は、この回答を編集してください。