import Foundation
//let dirs = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) as? [String];
//let dir = dirs![0];
var dir = "/home/guillermo/Escritorio/";
var file = "tokens";
var path = dir.stringByAppendingPathComponent(file);
if let archivoTokens = try? NSString(contentsOfFile: path as String, encoding: NSUTF8StringEncoding){
print(archivoTokens)
}
var lineasArchivoTokens:[String] = archivoTokens!.componentsSeparatedByString("\n");
var TOKENS:[String] = [String]();
var count = lineasArchivoTokens.count;
for index in 0..<count{
var tmpList:[String] = (lineasArchivoTokens[index]).componentsSeparatedByString(" ");
}
这是错误:
error: use of unresolved identifier 'archivoTokens'
var lineasArchivoTokens = archivoTokens!.componentsSeparatedByString("\n");
答案 0 :(得分:0)
正如@thefredelement所说,你不能在archivoTokens
区块之外使用if let archivoTokens = ... { ... }
。
您可以像这样重排代码:
if let archivoTokens = try? NSString(contentsOfFile: path as String, encoding: NSUTF8StringEncoding){
// note that archivoTokens here is not an Optional because it is garenteed not to be nil
// so the ! suffix is not needed
print(archivoTokens)
var lineasArchivoTokens:[String] = archivoTokens.componentsSeparatedByString("\n")
}
或者,以更自然的方式,使用guard
:
guard let archivoTokens = try? NSString(contentsOfFile: path as String, encoding: NSUTF8StringEncoding) else {
// guard statement requires exit when condition not satisfied
// you can also use `return` if it's inside a function
fatalError("failed to read archivoTokens from file")
}
// now archivoTokens is a normal non-nil NSString
var lineasArchivoTokens:[String] = archivoTokens.componentsSeparatedByString("\n");
var TOKENS:[String] = [String]();
var count = lineasArchivoTokens.count;
for index in 0..<count{
var tmpList:[String] = (lineasArchivoTokens[index]).componentsSeparatedByString(" ");
}