在 Swift 2 中用啥代替 stringByAppendingPathComponent [重复]
Posted
技术标签:
【中文标题】在 Swift 2 中用啥代替 stringByAppendingPathComponent [重复]【英文标题】:What to use in place of stringByAppendingPathComponent in Swift 2 [duplicate]在 Swift 2 中用什么代替 stringByAppendingPathComponent [重复] 【发布时间】:2015-09-27 23:17:26 【问题描述】:我刚刚用新的 Swift 2 安装了 Xcode 7,我现在有 50 多个错误说“stringByAppendingPathComponent”不可用,我应该改用“URLByAppendingPathComponent”。我一直在设置我的所有纹理属性,如下所示:
let dropTexture = SKTexture(image: UIImage(
contentsOfFile:NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent(
"P04_rainDrop1.png"))!)
我一直在这样做,因此当 SKScene 更改并且它一直运行良好时,它们不会留在内存中。但是直接替换“URLByAppendingPathComponent”并不能修复错误。
如何更改它以修复错误并获得相同的 SKTexture?
【问题讨论】:
【参考方案1】:你所要做的就是转换成 NSString 来恢复stringByAppendingPathComponent
,像这样:
let dropTexture = SKTexture(image: UIImage(
contentsOfFile:(NSBundle.mainBundle().resourcePath! as NSString).stringByAppendingPathComponent(
"P04_rainDrop1.png"))!)
正如 Leo Dabus 所说的那样,您可以通过向 String 添加扩展来避免所有转换。但是,您不应该像他建议的那样调用NSString(string:)
,这会生成一个额外的字符串。刚投:
extension String
func stringByAppendingPathComponent(pathComponent: String) -> String
return (self as NSString).stringByAppendingPathComponent(pathComponent)
【讨论】:
这仍然是实现这一目标的好方法吗?我找不到苹果是否在 Swift 上原生实现了这个 永远不要将 String 转换为 NSString。查看 Apple 规定的内容。 github.com/apple/swift/blob/… @Brennan 够公平的。如果不一定,我只是不喜欢回答“不要那样做”。但我实际上尽可能使用 URL 而不是字符串文件路径(现在几乎无处不在)。以上是关于在 Swift 2 中用啥代替 stringByAppendingPathComponent [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 3.1 中使用啥来代替 NSEntityDescription
Swift 4:NSFilenamesPboardType 不可用。用啥代替 registerForDraggedTypes?