Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 快速读取文件_Xcode_File_Swift - Fatal编程技术网

Xcode 快速读取文件

Xcode 快速读取文件,xcode,file,swift,Xcode,File,Swift,我在使用swift读取文件时遇到问题。我已经在网上搜索了很多东西,如果我能找到什么,我发现了3个不同的,但我不能让他们中的任何一个工作 这是: import Foundation //----- 1 ------ var error: NSErrorPointer = nil let url = NSURL(string: "ISO.csv") let csvString = String(contentsOfURL:url!, encoding: NSUTF8StringEnco

我在使用swift读取文件时遇到问题。我已经在网上搜索了很多东西,如果我能找到什么,我发现了3个不同的,但我不能让他们中的任何一个工作

这是:

    import Foundation


//----- 1 ------
var error: NSErrorPointer = nil

let url = NSURL(string: "ISO.csv")
let csvString = String(contentsOfURL:url!, encoding: NSUTF8StringEncoding, error: error);


println("contest")
println(csvString)


//----- 2 ------
func readFile(fileName: String, fileType: String) -> String{
    var fileRoot = NSBundle.mainBundle().pathForResource(fileName, ofType: fileType)
    var contents = NSString.stringWithContentsOfFile(fileRoot!, encoding: NSUTF8StringEncoding, error: nil)
    return contents
}

// example: read file.txt
var contents = readFile("ISO", "csv")
println(contents)


//----- 3 -----

let path = NSBundle.mainBundle().pathForResource("ISO", ofType: "csv")
var data = String.stringWithContentsOfFile(path, encoding: NSUTF8StringEncoding, error: nil)
在数字1中:它只返回一个零。但它可以从网站返回数据

编号2:/ISO/main.swift:26:20:“String.Type”没有名为“stringWithContentsOfFile”的成员

编号3:/ISO/main.swift:38:21:'stringWithContentsOfFile\编码:错误:'不可用:使用对象构造'NSStringcontentsOfFile:编码:错误:'

我不知道该怎么办,希望你们中的一些人知道,提前谢谢

//----- 2 ------
func readFile(fileName: String, fileType: String) -> String{
    var fileRoot = NSBundle.mainBundle().pathForResource(fileName, ofType: fileType)
    var contents = NSString.stringWithContentsOfFile(fileRoot!, encoding: NSUTF8StringEncoding, error: nil)
    return contents
}

// example: read file.txt
var contents = readFile("ISO", "csv")
println(contents)


//----- 3 -----

let path = NSBundle.mainBundle().pathForResource("ISO", ofType: "csv")
var data = String.stringWithContentsOfFile(path, encoding: NSUTF8StringEncoding, error: nil)
正如错误状态所示,这两种方法都使用了错误的初始化器语法。他们也做同样的事情

修正:

正如错误状态所示,这两种方法都使用了错误的初始化器语法。他们也做同样的事情

修正:


您可能会发现此工具非常有用:

因此,要解析文件,请执行以下操作:

import StreamScanner

if let input = NSFileHandle(forReadingAtPath: NSBundle.mainBundle().pathForResource("ISO", ofType: "csv"))
{
    let scanner = StreamScanner(source: input, delimiters: NSCharacterSet(charactersInString: ",\n"))

    //EITHER

    while
        let field: String = scanner.read() //read CSV field by field, skipping newlines
    {
        //work with field
    }

    //OR

    while  //parse each line at a time (if you're sure there're enough fields in each line and you even know their types)
        let field1: String = scanner.read(),
        let field2: Int = scanner.read(),
        let field3: Double = scanner.read(),
        {
            //work with fields
        }
}

希望,这会有所帮助。

您可能会发现此工具很有用:

因此,要解析文件,请执行以下操作:

import StreamScanner

if let input = NSFileHandle(forReadingAtPath: NSBundle.mainBundle().pathForResource("ISO", ofType: "csv"))
{
    let scanner = StreamScanner(source: input, delimiters: NSCharacterSet(charactersInString: ",\n"))

    //EITHER

    while
        let field: String = scanner.read() //read CSV field by field, skipping newlines
    {
        //work with field
    }

    //OR

    while  //parse each line at a time (if you're sure there're enough fields in each line and you even know their types)
        let field1: String = scanner.read(),
        let field2: Int = scanner.read(),
        let field3: Double = scanner.read(),
        {
            //work with fields
        }
}
希望有帮助。

Swift 3.0版本:

let path = Bundle.main.url(forResource: FileNameWithoutExtension, withExtension: FileExtension) 
do {
            let content = try String(contentsOf: path!, encoding: .utf8)
            print(content)
} catch  {
            print("Error:file content can't be loaded")
}
Swift 3.0版本:

let path = Bundle.main.url(forResource: FileNameWithoutExtension, withExtension: FileExtension) 
do {
            let content = try String(contentsOf: path!, encoding: .utf8)
            print(content)
} catch  {
            print("Error:file content can't be loaded")
}

这是因为在XCode 6.1中,初始值设定项现在可能会失败,所以苹果将许多类函数更改为初始值设定项。web上的一些示例仍然使用6.1之前的函数。请参见@Andy,这很可能是因为路径为零。你确定文件名和类型是正确的并且文件被添加到包中了吗?@JackWu,我很确定,我尝试了一些不同的路径,所有的路径我都尝试过拖放。这是因为在XCode 6.1中,初始化程序现在可能会失败,所以苹果将很多类函数改为初始化程序。web上的一些示例仍然使用6.1之前的函数。请参见@Andy,这很可能是因为路径为零。你确定文件名和类型是正确的,并且文件已添加到包中吗?@JackWu,我很确定,我尝试过一些不同的路径,所有这些路径我都尝试过拖放