在Swift 2.2中不推荐使用ContentsOfFile方法

时间:2016-03-21 05:14:41

标签: ios objective-c swift

我在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)")
    }

2 个答案:

答案 0 :(得分:27)

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 :(得分: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 */}