2015-06-23 19 views
-1

填充數組這樣的背景有點:如何從一個.txt文件在斯威夫特

我有一個VC,一個文本框,按下時,用戶segued到的tableView控制器。這個想法是,他們需要告訴我他們來自的國家。所以我現在有一個數組,它包含了一些國家,然後它被填充到tableView中。一切正常。但是,我需要顯示所有的國家,因爲有像196個國家,我認爲這將是一個與196個國家陣列是愚蠢的。

有沒有一種方法,我可以創建一個.txt文件與所有國家,然後從這個.txt文件填充數組?我創建了一個名爲:Countries.txt的文件,目前它是空白的。

  1. 如何在.txt文件中編寫國家/地區列表?例如「法國」「西班牙」「英國」「美國」 - 我需要用逗號分隔嗎?

  2. 我需要在tableViewController.swift中編寫什麼代碼才能使其工作?

  3. 或者,有沒有更好的方法可以做到這一點?提前

謝謝,我很新,迅速,所以請去容易:)

我對tableViewController代碼:

import UIKit 

class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchResultsUpdating { 

@IBOutlet var tabeView: UITableView! 

var countryPicker = ["Colombia", "England", "France", "Germany", "Brazil", "Austria", "Spain", "Australia", "USA", "Berlin", "Thailand", "Northern Ireland", "New Zealand", "Hawaii", "Switzerland", "Sweeden", "Finland", "Turkey", "Russia", "Netherlands", "Japan"] 


override func viewDidLoad() { 
    super.viewDidLoad() 

    countryPicker.sort(){$0 < $1} 

} 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

    return 1 

} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return countryPicker.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("UITableViewCell", forIndexPath: indexPath) as! UITableViewCell 

    cell.textLabel?.text = countryPicker[indexPath.row] 

    return cell 
} 

回答

1

你可以做到這一點

+ (NSArray<ObjectType> * nullable)arrayWithContentsOfFile:(NSString * nonnull)aPath 

and

- (BOOL)writeToFile:(NSString * nonnull)path atomically:(BOOL)flag 
+0

嗨,這是斯威夫特嗎?如果沒有,如果可能的話,你能在Swift中向我展示這些嗎?以及如何將它放入我的代碼中?謝謝 – Nick89

+0

這是Swift互操作性的新Objective-C語法。如果沒有制定過去明確的Objective-C垃圾,那麼Swifties就不夠開心。 – zaph

+0

@ Nick89不,它是具有泛型和可空性的Objective C。 – rounak

1

有很多方法可以做到這一點。正如rounak在他的回答中所說的那樣,NSArray包含了將內容保存並加載到「plist」文件的方法。這樣做的好處是,如果您使用Xcode打開文件,它將顯示格式良好的編輯器中的數組。

這些方法僅適用於數組和其中包含的所有內容都是「屬性列表對象」的情況。 (字典,數組,字符串,數字(整數和浮點數),日期,二進制數據和布爾值)。

但是,Xcode之外的屬性列表並不適合讀寫。內部文件格式相當惡劣的XML。也可以將plists保存爲快速和節省空間的二進制格式,但不能用文本編輯器讀取。

你也可以爲每個國家保存一個單獨的行國家列表,然後以字符串形式讀取內容(使用NSString方法,如stringWithContentsOfFile:encoding:error,然後使用NSString方法componentsSeparatedByString(傳入「\ n「或換行符作爲分隔符字符串)將您的長字符串拆分爲一個字符串數組,這樣做的好處是該文件是一個簡單的文本文件,可以用任何文本編輯器查看/編輯。只要是從使用換行相同的字符序列的平臺,但這是另一回事)

有像JSON和XML等選項,但我不會去到那些在這裏。