繁体   English   中英

如何在Swift中从.txt文件填充数组

[英]How to populate an array from a .txt file in Swift

在背景上有一点:

我有一个带有textField的VC,当按下该按钮时,该用户被锁定在tableView控制器上。 想法是,他们需要告诉我他们来自哪个国家。 因此,我目前有一个数组,其中包含一些国家/地区,然后将其填充到tableView中。 一切正常。 但是,我需要显示所有国家,并且由于有196个国家,所以我认为在196个国家中有很多国家是很愚蠢的。

有没有一种方法可以创建一个包含所有国家/地区的.txt文件,然后从该.txt文件填充数组? 我已经创建了一个文件:Countrys.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
}

你可以这样做

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

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

有很多方法可以做到这一点。 正如rounak在回答中所说,NSArray包括用于将内容保存并加载到“ plist”文件中的方法。 这样做的好处是,如果使用Xcode打开文件,它将在格式良好的编辑器中显示该数组。

仅当数组及其中包含的所有内容均为“属性列表对象”时,这些方法才有效。 (字典,数组,字符串,数字(整数和浮点数),日期,二进制数据和布尔值)。

但是,属性列表不太适合在Xcode之外进行读取和写入。 内部文件格式是看上去很讨厌的XML。 也可以将复制人保存为快速且节省空间的二进制格式,但无法使用文本编辑器读取。

您还可以将每个国家/地区的国家/地区列表保存在一起,然后以String的形式读取内容(使用NSString方法,例如stringWithContentsOfFile:encoding:error 。然后,您可以使用NSString方法componentsSeparatedByString (在“ \\ n”(或换行符,作为分隔符字符串)将您的长字符串分成字符串数组。这样做的好处是该文件是一个简单的文本文件,可以使用任何文本编辑器查看/编辑。只要它来自使用相同字符序列进行换行的平台,但这是另一回事了)

还有其他选项,例如JSON和XML,但在此不做介绍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM