ios - swift 2 : Cannot invoke initializer for type 'NSString'

标签 ios swift

我是 Swift 开发的新手。我刚刚将现有的工作代码转换为 swift2,同时从 6 更新 Xcode 7。

var err: NSError?
let template = NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: &err) as! String
let iframe = template.stringByReplacingOccurrencesOfString("{{VIDEO_ID}}", withString: id, options: NSStringCompareOptions.allZeros, range: nil)
if err != nil {
        return false
}

然后, 我收到此错误消息:

Cannot invoke initializer for type 'NSString' with an argument list of type '(contentsOfFile: String, encoding: UInt, error: inout NSError?)'

你有什么想法吗?非常感谢!

最佳答案

您应该使用 Swift 原生类型 String。您还需要实现 Swift 2.0 try catch 错误处理。像这样尝试:

let template = try! String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
let iframe = template.stringByReplacingOccurrencesOfString("{{VIDEO_ID}}", withString: id, options: [], range: nil)

如果您想处理错误:

do {
    let template = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
    let iframe = template.stringByReplacingOccurrencesOfString("{{VIDEO_ID}}", withString: id, options: [], range: nil)
} catch let error as NSError {
    print(error.localizedDescription)
}

关于ios - swift 2 : Cannot invoke initializer for type 'NSString' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663872/

相关文章:

ios - Visual Studio 中仅支持 ARM64 架构

ios - 从另一个 View Controller swift 设置 UILabel

Xcode 初学者在简单的 tableview 代码上有运行时错误

swift - 如何在 ForEach SwiftUI 中使用核心数据关系

ios - 即使应用程序未在 Swift 中运行也接收位置

jquery - 如何使我的 'click' 功能与 iOS 一起使用

ios - 如何在数组中查找字符串元素而不考虑大写或小写

iphone - 本地化动态 NSString

ios - 使用循环打印字典的值

ios - 如何正确使用 UIElements 上的占位符 API