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)
。
关于你的第二个问题:
writeToFile
和write(to:
之间的主要区别在于,第一个用于String
s,第二个用于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()的主要内容,如果未能解决你的问题,请参考以下文章