xcode7/swift 2.0中不推荐的方法 我正使用XCODE7/SWIFT 2更新iOS 8内置到iOS9的应用程序。和许多其他人一样,我的应用程序崩溃得很厉害。我的应用程序的基本概念是允许用户将视频/图像上传到某个活动。现在,我收到一条错误消息,说

xcode7/swift 2.0中不推荐的方法 我正使用XCODE7/SWIFT 2更新iOS 8内置到iOS9的应用程序。和许多其他人一样,我的应用程序崩溃得很厉害。我的应用程序的基本概念是允许用户将视频/图像上传到某个活动。现在,我收到一条错误消息,说,ios,mobile,parse-platform,swift2,xcode7,Ios,Mobile,Parse Platform,Swift2,Xcode7,找不到要更新的对象(代码:101,版本:1.9.0) 从解析。起初我以为这是Parse的错误,但后来我发现我可能在更新代码时犯了一些愚蠢的错误。如果你能看看我所做的更改并指出我所犯的错误,那将非常有帮助 我更改了以下内容: var outputURL = NSURL.fileURLWithPath(NSTemporaryDirectory().stringByAppendingPathComponent("\(filename)").stringByAppendingString(".mp4")

找不到要更新的对象(代码:101,版本:1.9.0)

从解析。起初我以为这是Parse的错误,但后来我发现我可能在更新代码时犯了一些愚蠢的错误。如果你能看看我所做的更改并指出我所犯的错误,那将非常有帮助

我更改了以下内容:

var outputURL = NSURL.fileURLWithPath(NSTemporaryDirectory().stringByAppendingPathComponent("\(filename)").stringByAppendingString(".mp4"))

我之所以做此更改,是因为stringByAppendingString现在已不推荐使用

我所做的其他改变是:

let filename = (outputFileUrl.absoluteString.stringByDeletingPathExtension.lastPathComponent ?? "video") + "-c"


我确信我在转换函数方面做得很好。如果有人能指出我在这两个更改中的错误,我们将不胜感激。

第一个示例的区别是:

  • 前一种语法创建NSString对象
  • 新语法创建一个NSURL对象
例如,使用与URL相关的API而不是
…contentsOfFile
使用
…contentsOfURL
或从
路径
属性获取URL的路径

let outputURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("\(filename).mp4").path!
第二个示例返回一个字符串,该字符串在前一个语法中使用百分比编码的特殊字符,在新语法中使用百分比编码的字符串。您可以添加百分比编码

保留旧语法的另一种方法是将
String
强制转换为
NSString
,例如

let filename = (((outputFileUrl.absoluteString as NSString).stringByDeletingPathExtension as NSString).lastPathComponent ?? "video") + "-c"
但我建议使用与URL相关的API

let outputURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("\(filename).mp4").path!
let filename = (((outputFileUrl.absoluteString as NSString).stringByDeletingPathExtension as NSString).lastPathComponent ?? "video") + "-c"