使用ubuntu 14.04

时间:2016-04-05 02:52:03

标签: swift ubuntu-14.04

老实说,我是一个快速的菜鸟,但我有一个项目与这种语言有关,所以,这里是代码:

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");

1 个答案:

答案 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(" ");
}