2015-03-26 3 views
0

У меня есть файл открытого текста, который просто имеет список слов. Я хотел бы привести этот список в виде массива, но мне не повезло. Я также могу привести его в виде строки и преобразовать ее в массив, но я не могу заставить это работать.Как быстро превратить текстовый файл в строку или массив?

let location = "/Users/user/Desktop/list.txt" 
var content = NSString(contentsOfFile: location, encoding: NSUTF32StringEncoding, error: nil) 
println(content) 

Мой выход всегда «ноль» То же самое, если я пытаюсь сделать массив вместо:.

let content2 = NSArray(contentsOfFile: location) 
println(content2) 
+0

Пробовали ли вы другую кодировку? Возможно, NSUTF8StringEncoding вместо NSUTF32StringEncoding? - ** И почему ** вы не используете параметр 'error' для получения информации о проблеме? –

+0

Вы используете этот код на игровой площадке или в реальном проекте Xcode? –

ответ

0

Существует ли этот файл Что

NSFileManager().fileExistsAtPath(location) 

возвращение

?

Кроме того, вы уверены, что кодируется UTF-32? Скорее всего, кодировка, вероятно, UTF-8.

0

изменение:

var content = NSString(contentsOfFile: location, encoding: NSUTF32StringEncoding, error: nil) 

к:

var content = NSString(contentsOfFile: location, encoding: NSUTF8StringEncoding, error: &err) 

EDIT: удалены ноль из предложенного исправления в просьбе Мартина АиР

+1

Пожалуйста, не рекомендуем 'error: nil' ... –

+0

@MartinR Я исправлю, что я только что скопировал его код и изменил то, что сделало бы его работу – Steve

1

я использовать этот вспомогательный класс для файла работы:

class File { 
    var path="" 

    init(path: String,name:String){ 
     self.path=path+"/"+name 
    } 

    init(path: String){ 
     self.path=path 
    } 

    func read()->String { 
     return NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil)! 
    } 

    func write(data: String) { 
     data.writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding, error: nil) 
    } 

    func getLineArray()->[String] { 
     return read().componentsSeparatedByString("\n") 
    } 
} 

используя:

let address = "/Users/sajadgarshasbi/Desktop/myTestFile/sample.txt" 
if NSFileManager.defaultManager().fileExistsAtPath(address) { 
    let f = File(path: address) 
    println(f.read()) 
}else{ 
    println("File Not Found") 
} 
0

Если вы используете игровое поле, оно всегда будет возвращать ноль, потому что детская площадка изолирована песочницей. Вы можете поместить свой файл в каталог документов, но он находится где-то в другом месте на вашем компьютере и, вероятно, выглядит как нечто вроде строки ниже.

"/var/folders/f9/yrxcqv_10m57prx9lwts4qy80000gq/T/com.apple.dt.Xcode.pg/containers/com.apple.dt.playground.stub.iOS_Simulator.MyPlayground-iOS-NSDate-85BEA777-C527-4A79-9B4E-53427CF98B7D/Documents/".

Вы можете открыть эту папку с помощью искателя Главное меню> Перейти> Перейти в папку ... (Command-Shift-G) и вставьте этот путь к каталогу там.

Вы можете разместить свою площадку документов.Папку используя код ниже:

let documentDirectoryPath = (NSFileManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first as NSURL).path! 

Просто поместите туда файл, а затем вы можете открыть его в виде строки:

let fileName = documentDirectoryPath.stringByAppendingPathComponent("test.txt") 

var error:NSError? 
if "This is a sample sentence.".writeToFile(fileName, atomically: true, encoding: NSUTF8StringEncoding, error: &error) { 
    println("file successfully saved") // "file successfully saved" 
} else { 
    if let error = error { 
     println(error.description) 
    } 
} 


if let myLoadedString = String(contentsOfFile: fileName, encoding: NSUTF8StringEncoding, error: &error) { 
    println(myLoadedString) // "This is a sample sentence." 
} else { 
    if let error = error { 
     println(error.description) 
    } 
} 
Смежные вопросы