xcode7/swift 2.0 中弃用的方法

Deprecated methods in xcode7/swift 2.0

我正在使用 xcode7/swift 2.0 将我在 ios 8 中构建的应用程序更新到 ios9。像许多其他人一样,我的应用程序崩溃得很厉害。我的应用程序的基本概念是让用户上传 videos/images 到某个事件。现在,我收到一条错误消息

object not found for update (Code: 101, Version: 1.9.0)

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

我更改了以下内容:

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

var outputURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("\(filename).mp4")

我进行此更改是因为现在不推荐使用 stringByAppendingString。

我做的其他改变是:

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

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

我很确定我在转换函数方面做对了。如果有人能指出我在这两个更改中做错了什么,将不胜感激。

第一个例子的区别是:

  • 前一种语法创建了一个 NSString 对象
  • 新语法创建一个 NSURL 对象

使用 URL 相关的 API 代替 …contentsOfFile 使用 …contentsOfURL 或从 [=14] 获取 URL 的路径=] 属性

let outputURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).URLByAppendingPathComponent("\(filename).mp4").path!

第二个例子returns一个字符串在以前的语法中用百分号编码的特殊字符和一个在新语法中没有百分号编码的字符串。您可以添加百分比编码。

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

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

但我建议使用 URL 相关 API