Rõ ràng, trình biên dịch nghĩ NSSearchPathDirectory:0
là một mảng, và tất nhiên nó mong đợi kiểu NSSearchPathDirectory
thay thế. Chắc chắn không phải là một thông báo lỗi hữu ích.
Nhưng như lý do:
Đầu tiên, bạn đang nhầm lẫn giữa các tên và kiểu đối số. Hãy xem định nghĩa hàm:
func NSSearchPathForDirectoriesInDomains(
directory: NSSearchPathDirectory,
domainMask: NSSearchPathDomainMask,
expandTilde: Bool) -> AnyObject[]!
directory
và domainMask
là tên, bạn đang sử dụng các loại, nhưng dù sao bạn cũng nên để chúng ra cho các chức năng. Chúng được sử dụng chủ yếu trong các phương pháp.
- Ngoài ra, Swift được gõ mạnh, vì vậy bạn không nên sử dụng 0. Thay vào đó hãy sử dụng giá trị của enum.
- Và cuối cùng, nó trả về một mảng, không chỉ là một đường dẫn.
Vì vậy, điều đó cho chúng tôi (cập nhật cho Swift 2.0):
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
và cho Swift 3:
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]