字符串未转换为 NSURL [SWIFT] [重复]
Posted
技术标签:
【中文标题】字符串未转换为 NSURL [SWIFT] [重复]【英文标题】:String is not convert to NSURL [SWIFT] [duplicate] 【发布时间】:2015-10-02 18:29:29 【问题描述】:为什么会出现此错误?我粘贴代码,我的第一次尝试在运行时破坏了一个线程。天哪,现在我明白为什么苹果招聘人员问 CS 学生的第一个问题是你知道苹果代码还是“swift”...(meh)
错误提示 - lastPathComponent is available: Use lastPathComponent on NSURL instead
// get a list of all the png files in the app's images group
let paths = NSBundle.mainBundle().pathsForResourcesOfType(
"png", inDirectory: nil)
// get image filenames from paths
for path in paths
if !path.lastPathComponent.hasPrefix("AppIcon") //error
allCountries.append(path.lastPathComponent) //error
尝试 1:
for path in paths as [AnyObject]
if !path.lastPathComponent.hasPrefix("AppIcon")
allCountries.append(path.lastPathComponent)
【问题讨论】:
这是因为我无法在我的 iphone 上使用原始 Xcode 5 进行部署 感谢您的电子邮件。这些应用程序是用 Swift 1.2 编写的,在 Swift 1.2 和 Swift 2.0 之间有许多重大变化。 Xcode 7 需要 Swift 2.0。 您仍然可以将 lastPathComponent 与 NSString 一起使用。只需将 (self as NSString).lastPathComponent 或添加到您的项目中,这样您就不需要更改代码了 【参考方案1】:使用 URL 相关的 API
if let imageURLs = NSBundle.mainBundle().URLsForResourcesWithExtension("png", subdirectory: nil)
// get image filenames from paths
for url in imageURLs
if !url.lastPathComponent!.hasPrefix("AppIcon")
allCountries.append(url.lastPathComponent!)
或有点“更快捷”
if let urls = NSBundle.mainBundle().URLsForResourcesWithExtension("png", subdirectory: nil)
allCountries = urls.filter $0.lastPathComponent!.hasPrefix("AppIcon") == false .map $0.lastPathComponent!
【讨论】:
不。我试过了。它没有工作。if let paths = NSBundle.mainBundle().URLsForResourcesWithExtension( "png", subdirectory: nil) // get image filenames from paths for path in paths as [AnyObject] if !path.lastPathComponent.hasPrefix("AppIcon") allCountries.append(path.lastPathComponent!)
不要转换为 [AnyObject]。按原样使用代码
我收到可选类型“字符串?”的错误值未拆封;你有没有想过使用'!或者 '?'代码if !path.lastPathComponent.hasPrefix("AppIcon")
请使用我的代码! lastPathComponent
后面有个感叹号以上是关于字符串未转换为 NSURL [SWIFT] [重复]的主要内容,如果未能解决你的问题,请参考以下文章