如何在Swift中将某些数据解析成数组?

时间:2016-04-16 23:15:03

标签: ios swift

我正在iOS / Swift中读取.txt文件。我从文本文件中获取了所有信息。问题是我只想获取用户名并将它们存储在一个数组中。现在我认为它将来自.txt文件的所有数据存储在一个字符串中。我怎样才能正确解析这个,所以我只有数组中的用户名?

这是我现在的代码

    if let filepath = NSBundle.mainBundle().pathForResource("myfile", ofType: "txt") {
        do {
            let contents = try NSString(contentsOfFile: filepath, usedEncoding: nil) as String
            print(contents)
        } catch {
            // contents could not be loaded
        }
    } else {
        print("UNABLE TO FIND TEXT FILE");
    }

我的文字文件格式:

User FirstName LastName

asf john smith

adfkh carrie underwood

2 个答案:

答案 0 :(得分:0)

这是使用高阶函数的解决方案。希望这适合你。

let text = "tj thomas jeffereson \nbf benjamin franklin\ngw george washington"


let usernames = text.characters
    .split { $0 == "\n" }
    .map { String($0) }
    .map { String($0.characters.split(" ")[0]) }

print(usernames)

输出:

["tj", "bf", "gw"]

循环结果:

for user in usernames {
   print(user)
}

答案 1 :(得分:0)

编辑:使用.plist文件添加解决方案

一种方法是,您可以将信息存储到.plist文件中。

  1. 按命令+ N添加名为UserInformation.plist的新.plist文件(您可以将UserInformation替换为您喜欢的任何名称。)并按如下所示进行编辑
  2. enter image description here

    1. 然后您可以将用户名存储到数组中。

      if let path = NSBundle.mainBundle().pathForResource("UserInformation", ofType: "plist") {
          if let data = NSArray(contentsOfFile: path) {
              let userName = NSMutableArray.init(capacity: 1)
              for dict in data {
                  userName.addObject(dict.valueForKey("User")!)
              }
              // Now user names are stored into a array
          }
      }
      
    2. 另一种方法是,您也可以将信息存储到本地.json文件中,尽管JSON通常用于客户端和服务器之间的通信。

      表格iOS5,Apple提供了支持解析JSON的API。

      1. 使用您喜欢的任何文本编辑器创建一个包含以下内容的json文件,并使用名称UserInfo.json保存它(您可以用您喜欢的任何名称替换UserInfo。)

        [
            { "User":"asf", "FirstName":"john", "LastName":"smith"},
            { "User":"adfkh", "FirstName":"carrie", "LastName":"underwood"}
        ]
        
      2. 将其添加到您的项目中。

      3. 现在您可以将用户名存储到数组中。

        if let path = NSBundle.mainBundle().pathForResource("UserInfo", ofType: "json") {
            if let data = NSData(contentsOfFile: path) {
                do {
                    let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers ) as! NSMutableArray
                    let userName = NSMutableArray.init(capacity: 1);
                    for  dict in jsonData {
                        userName.addObject(dict.valueForKey("User")!)
                    }
                    // Now user names are stored into a array
                } catch {
                    // report error
                } 
            }
        }
        
      4. 有关JSON的更多详细信息,请访问www.json.org