2014-06-16 19 views
4

我一直在學習Swift並構建基於Swift的Cocoa應用程序,並面臨Swift內置的Array類型沒有writeToFile: atomically:方法的問題,該方法在Objective-C的NSArray中實現。什麼是NSArray的writeToFile的等價物:原子:在Swift和Array中?

那麼如何將數組的內容寫入文件? Swift中有沒有這樣的方法? (僅供參考,我無法找到很像the Objective-C's NSArray的Swift's Array類型的文檔,如果您有這種情況,請在評論部分中將其鏈接。)

或者如果無法寫入數組內容使用內置Array在Swift中的文件,最好的選擇是什麼?我認爲NSArray也可以在Swift代碼中使用,但我寧願避免Objective-C的類。或者我應該使用擴展來實現Array中的功能?

回答

7

我不知道如果斯威夫特存在的「原生」的能力寫入陣列的文件,但由於陣列可橋接至NSArray S,你應該能夠在您的陣列寫這樣的文件:

let mySwiftArray = ... // Your Swift array 
let cocoaArray : NSArray = mySwiftArray 
cocoaArray.writeToFile(filePath, atomically:true); 

第二行創建NSArray類型的「橋接」對象,該對象應該允許您訪問基礎中的所有方法。

1

這將工作...

let array = ["One", "Two", "Three"] as NSArray 
array.writeToFile("/Users/xxx/Desktop/trial.txt", atomically:true) 

輸出是:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<array> 
    <string>One</string> 
    <string>Two</string> 
    <string>Three</string> 
</array> 
</plist> 

但你必須將它轉換爲一個NSArray

let array = ["One", "Two", "Three"] // Native Swift array will not work 
array.writeToFile("/Users/xxx/Desktop/trial.txt", atomically:true) 

工作。

相關問題