2015-09-04 2 views
0

Я хочу записать данные в файл, , если файл не существует, создайте его, иначе перезапишите его. Я использую Swift. Это то, что я пытался во время обучения Swift:записывать int и строковые данные в файл

//Get documents directory 
let docDir = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last as? String 

//get file path, I write data to this file 
let filePath = docDir!.stringByAppendingPathComponent(“myFile.txt”) 

//Write integer data to file 
let intData = 10 
String(intData).writeToFile(filePath, atomically: false, encoding: NSUTF8StringEncoding, error: nil); 

//Write String data to file 
let strData = “strstr” 
strData.writeToFile(filePath, atomically: false, encoding: NSUTF8StringEncoding, error: nil); 

Так как я новичок в IOS & Swift, мне интересно, есть ли лучший способ сделать это?

(По крайней мере, я чувствую, что в моем текущем коде, мне нужно всегда преобразовать целое число в строку перед записью в файл, который является многословным.)

=== Обновление ===

Я googled & нашел, что кто-то использует NSOutputStream для достижения подобной вещи, мне интересно, что лучше & почему, когда лучше использовать NSOutputStream?

+0

Ваш инструмент прост и понятен – Bannings

ответ

0

Вы на правильном пути

Для простого типа данных, используя DocumentDirectory так, как у вас есть очень хороший. Он прост в реализации и легко доступен для доступа. Использование этого метода не означает, что вам нужно сохранить файл .txt. Вы считали сохранение в виде файла plist? Это позволит вам сохранить запись как Bool, Number, Date или String - исключая преобразование. Для получения более подробной информации о сохранении PLIST в NSUserDefaults, нажмите здесь Save Data to .plist File in Swift

Plists велики, но имеет ограничение

Вы можете сэкономить много других типов в PLIST, как хорошо, но вам нужно закодировать их как Объект NSData для сохранения в plist. Это может быть опасно, хотя. Это так просто использовать плиты для хранения, что соблазняет нас злоупотреблять ими. Плиты не предназначены для базы данных, и они могут привести к тому, что ваше приложение будет очень медленным, а память неэффективна, если вы полагаетесь на них для хранения таких вещей, как изображения или массивы изображений (yikes).

Для более интенсивного взгляда хранения на CoreData

Если вы в конечном итоге желание сохранить такие вещи, как изображения или огромные объемы данных, вам нужно будет исследовать что-то вроде Core Data, который по существу является модель данных (вид базы данных), с которой может работать ваше приложение. Если вам это нужно, спасите себе головную боль и посмотрите в MagicalRecord github (https://github.com/magicalpanda/MagicalRecord).

Смежные вопросы