为什么我不能将字符串附加到NSURL?

Fre*_*Lee 6 nsurl writetofile swift

将.txt文件组件附加到URL路径不起作用:

var error:NSError?
let manager = NSFileManager.defaultManager()
let docURL = manager.URLForDirectory(.DocumentDirectory, inDomain:.UserDomainMask, appropriateForURL:nil, create:true, error:&error)
docURL.URLByAppendingPathComponent("/RicFile.txt") <-- doesn't work
Run Code Online (Sandbox Code Playgroud)

通过调试器:

file:///Users/Ric/Library/Developer/CoreSimulator/Devices/
<device id>/data/Containers/Data/Application/<app id>/Documents/
Run Code Online (Sandbox Code Playgroud)

使用docURL将字符串写入文件不起作用,因为缺少文件名.

原因(通过错误):

"操作无法完成.是一个目录"

所以问题:为什么以下不起作用?

docURL.URLByAppendingPathComponent("/RicFile.txt")
Run Code Online (Sandbox Code Playgroud)

Ber*_*ter 19

URLByAppendingPathComponent:不会改变现有的NSURL,它会创建一个新的.从文档:

URLByAppendingPathComponent:返回通过将路径组件附加到原始URL而创建的新URL.

您需要将方法的返回值赋给某些东西.例如:

let directoryURL = manager.URLForDirectory(.DocumentDirectory, inDomain:.UserDomainMask, appropriateForURL:nil, create:true, error:&error)
let docURL = directoryURL.URLByAppendingPathComponent("/RicFile.txt")
Run Code Online (Sandbox Code Playgroud)

更好的是使用NSURL(string:String, relativeTo:NSURL):

let docURL = NSURL(string:"RicFile.txt", relativeTo:directoryURL) 
Run Code Online (Sandbox Code Playgroud)