StringByAppendingPathComponent() 和 WriteToFile()

Posted

技术标签:

【中文标题】StringByAppendingPathComponent() 和 WriteToFile()【英文标题】:StringByAppendingPathComponent() and WriteToFile() 【发布时间】:2016-07-06 18:31:40 【问题描述】:

我正在尝试通过翻译 Swift 2 中的代码来学习 Swift 3。在 swift 2 中,我看到的代码如下:

return fullPath.stringByAppendingPathComponent(name)

但是,当我在 Swift 3 中尝试时,我得到了类似的代码,但是像这样:

return fullPath.strings(byAppendingPaths: [name])

问题是,第一个代码中的返回类型是 String(这是我从所学课程中需要的输出),但第二个代码中的返回类型应该是 [String]。

另一个问题是,在 Swift 2 中,代码应该是:

imgData?.WriteToFile(fullPath, atomicaly:Bool)

但在 Swift 3 中,我只能输入这样的代码:

imgData.Write(to: URL , option: WritingOption) throws

但在某些示例中,有 .Write(toFile: , atomically:) 但我在 Xcode 中找不到它。

我是翻译不正确还是同时使用了 Swift 2 和 Swift 3?

【问题讨论】:

你想要fullPath.appendingPathComponent(name) @dan 感谢您的帮助及其作品.. 【参考方案1】:

关于您问题的第一部分,正如 dan 在 cmets 中所述,您应该改用 fullPath.appendingPathComponent(name)

关于你的第二个问题:

writeToFilewrite(to: 之间的主要区别在于,第一个用于Strings,第二个用于NSData

有些相关:

根据NSData Class Reference

ios 2.0+ 中你有:

write(to:atomically:)

write(toFile:atomically:)

给定:

由于目前仅支持 file:// URL,因此没有 此方法与 writeToFile:atomically: 的区别,除了 第一个参数的类型。

根据Swift Changelog,这些在 Swift 3 中都没有改变。

【讨论】:

很遗憾,您的回答只是回应了评论而没有添加任何内容。 我从我的课程示例中看到(用 swift 2 编写),他们使用 imgData?.WriteToFile(fullPath, atomicaly:Bool) 。 imgData 是 NSdata 吗? fullPath 是字符串中的路径。然后我在 xcode 8 中使用 swift 3 进行了尝试,当我输入 imgData 时,自动完成中没有 write(toFile: String, atomically:) 选项。我应该选择 write(toFile) 因为我的 filePath 是字符串。但我唯一的选择是只写(到:)。你知道怎么解决吗? @WMios @RoccoBerry,为什么不将字符串转换为 NSData? let data = imgData.dataUsingEncoding(NSUTF8StringEncoding) @WMios 我终于使用 Write(to:URL) 并将字符串转换为 url。这很有效....无论如何,非常感谢:D

以上是关于StringByAppendingPathComponent() 和 WriteToFile()的主要内容,如果未能解决你的问题,请参考以下文章