'stringByAppendingPathComponent'不可用

时间:2015-08-20 14:10:50

标签: ios swift path

我收到了错误

'stringByAppendingPathComponent' is unavailable: Use 'stringByAppendingPathComponent' on NSString instead.

当我尝试

let documentsFolder = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let databasePath = documentsFolder.stringByAppendingPathComponent("test.sqlite")

这显然对以前的人有用,但现在在Xcode 7 beta 5中对我不起作用。

Apple开发者论坛上的

This thread建议使用扩展程序或直接转换为NSString。但是,如果我确实将其转换为NSString

let databasePath = documentsFolder.stringByAppendingPathComponent("test.sqlite" as NSString)

然后我收到错误

'NSString' is not implicitly convertible to 'String'...

它通过插入as String让我选择“修复它”,这会让我们回到原来的错误。

这也适用于stringByAppendingPathExtension

我该怎么办?

2 个答案:

答案 0 :(得分:26)

您可以创建一个URL而不是String路径。

let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
let fileURL = documentsURL?.appendingPathComponent("test.sqlite")

如果你绝对需要路径,那么你可以这样得到它:

guard let path = fileURL?.path else {
    return
}

print(path) // path will exist at this point

在你提到的thread中有一些讨论,Apple可能会故意指导人们使用URL而不是字符串路径。

另见:

答案 1 :(得分:11)

您可以使用:

mydata(1).data = A;
mydata(2).data = B;
mydata(3).data = C;