Swift 2.2中的ContentsOfFile方法已经被弃用

4

我的Objective-C代码是:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Logger.txt"];
NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];

当我尝试将此转换为Swift时,由于ContentsOfFile方法已被弃用,因此无法进行转换。有人可以告诉我如何将其转换为Swift吗? 我正在使用Xcode 7.2和Swift 2.2。我的Swift代码是:

var paths : NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    var documentsDirectory : NSString = paths[0] as! String
    var filePath = documentsDirectory.stringByAppendingPathComponent("Logger.txt")
    var error:NSError?
    let content = NSString(contentsOfFile: filePath, encoding:NSUTF8StringEncoding, error: &error)
    if let theError = error {
        NSLog("\(theError.localizedDescription)")
    }

获取Swift 2.2书籍并查找“throw”。 - gnasher729
2个回答

30

Swift 2+

let path:String = NSBundle.mainBundle().pathForResource("Logger", ofType: "txt")!
txtContent.text = try? String(contentsOfFile: path, encoding: NSUTF8StringEncoding)

Swift 3+

let path:String = Bundle.main.path(forResource: "Logger", ofType: "txt")!
txtContent.text = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)

1
我认为这会对你有所帮助:

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documentsDirectory = paths[0]
let filePath = (documentsDirectory as NSString).stringByAppendingPathComponent("Logger.txt")
do {
    let content = try NSString(contentsOfFile: filePath, encoding: NSUTF8StringEncoding)
}catch {/* error handling here */}

1
我不明白,如果contentsOfFile已经被弃用了,为什么还要展示使用这个被弃用的方法的例子? - tgunr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接