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

时间:2015-06-23 21:51:30

标签: ios arrays swift uitableview

有点背景:

我有一个带有textField的VC,当按下时,用户被segued到tableView控制器。他们的想法是,他们需要告诉我他们来自哪个国家。所以我目前有一个数组,其中包含一些国家/地区,然后将其填充到tableView中。一切正常。但是,我需要展示所有国家,因为有196个国家,我认为拥有196个国家的阵列是愚蠢的。

有没有办法可以创建一个包含所有国家/地区的.txt文件,然后从这个.txt文件中填充数组?我创建了一个名为:Countries.txt的文件,它目前是空白的。

  1. 如何在.txt文件中写入国家/地区列表?例如“法国”“西班牙”“英国”“美国” - 我需要用逗号分隔它们吗?

  2. 我需要在tableViewController.swift中编写哪些代码才能使其工作?

  3. 或者,有没有更好的方法可以做到这一点?

  4. 在此先感谢,我很快乐,所以请轻松一下:)

    我的tableViewController代码:

    <description>No definition found for Table yahoo.finance.quotes</description>
    

2 个答案:

答案 0 :(得分:1)

您可以使用

执行此操作
+ (NSArray<ObjectType> * nullable)arrayWithContentsOfFile:(NSString * nonnull)aPath 

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

答案 1 :(得分:1)

有很多方法可以做到这一点。正如rounak在他的回答中所说,NSArray包含了将内容保存和加载到&#34; plist&#34;文件。这样做的好处是,如果用Xcode打开文件,它会在格式很好的编辑器中显示数组。

这些方法仅在数组及其中包含的所有内容都是&#34;属性列表对象时才有效。&#34; (字典,数组,字符串,数字(整数和浮点数),日期,二进制数据和布尔值)。

然而,属性列表不适合在Xcode之外进行读写。内部文件格式是相当讨厌的XML。它也可以将plist保存为快速且节省空间的二进制格式,但可以使用文本编辑器读取。

您还可以为每个国家/地区保存单独行的国家/地区列表,然后以字符串形式读取内容(使用类似stringWithContentsOfFile:encoding:error的NSString方法。然后您使用NSString方法{ {1}}(传入&#34; \ n&#34;或换行符,作为分隔符字符串)将长字符串分解为字符串数组。这样做的好处是文件很简单可以使用任何文本编辑器查看/编辑的文本文件(只要它来自使用相同字符序列进行换行的平台,但这是另一个故事)

还有其他选项,如JSON和XML,但我不打算进入这些选项。