どうやら、コンパイラNSSearchPathDirectory:0
は配列であると考え、当然のことながら型NSSearchPathDirectory
を期待しています。確かに役に立たないエラーメッセージです。
しかし、理由については:
最初に、引数の名前と型を混同しています。関数の定義を見てみましょう:
func NSSearchPathForDirectoriesInDomains(
directory: NSSearchPathDirectory,
domainMask: NSSearchPathDomainMask,
expandTilde: Bool) -> AnyObject[]!
directory
とdomainMask
名前であり、タイプを使用していますが、とにかく関数の場合は省略してください。それらは主にメソッドで使用されます。
- また、Swiftは強く型付けされているため、0だけを使用するべきではありません。代わりに列挙型の値を使用してください。
- そして最後に、単一のパスだけではなく配列を返します。
したがって、(Swift 2.0用に更新された)次のようになります。
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
Swift 3の場合:
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]