在swift循环数组中遇到语法问题

时间:2016-04-18 19:39:19

标签: arrays xcode swift for-loop

我试图找出如何遍历此用户名数组,但我不确定语法。我在xcode中使用swift

我目前有:

 // Read text file
        if let filepath = NSBundle.mainBundle().pathForResource("barbers", ofType: "txt")
        {
            do
            {
                //let contents = try NSString(contentsOfFile: filepath, usedEncoding: nil) as String;
                //print(contents);
                let text = try NSString(contentsOfFile: filepath, usedEncoding: nil) as String;

                // Create character array & parse
                let usernames = text.characters
                    .split { $0 == "\n" }
                    .map { String($0) }
                    .map { String($0.characters.split(" ")[0]) }

                // Print Users
                print(usernames);

                // Test



            }
            catch
            {
                // Catch error?
            }
        }
        else
        {
            // Print error to console log
            print("Error: Could not find text file - something went wrong");
        }

我的问题是:我如何遍历我的用户名数组?

我只是不知道快速语法

我正在寻找像

这样的东西
for(int i =0; i < usernames.size(); i ++ )
{
  if(usernames[i] == USER)
  {
    b = true;
    break;
  }
  b = false;
}
  
    

更新

  

好的,我已经弄清楚如何循环但现在我遇到了麻烦

我制作了一个全局变量

var abc = "";

然后我做了

let abc = usernames;

现在当我尝试这样做时

// Test
for i in abc.characters
{
    print("abc array contents: " + i);
    if(i == theUser)
    {
        print("Barber");
        barb = true;
        break;
    }
    print("USER " + theUser);
    barb = false;
    print("\n");
}

我收到错误

二元运算符&#39; +&#39;不能应用于&#39; String&#39;类型的操作数和&#39;字符&#39;

二元运算符&#39; ==&#39;不能应用于类型&#39;字符&#39;的操作数。和&#39;字符串&#39;

3 个答案:

答案 0 :(得分:1)

for username in usernames
{
    if(username == USER)
    {
        b = true;
        break;
    }
    b = false;
}

或者如果您需要访问当前项目的索引:

for (index, username) in usernames.enumerate()
{
    // same body as above
}

答案 1 :(得分:1)

以上所有这些工作,但我最喜欢的Swifty for循环是

  for index in 0..< usernames.count { 
     //your code here
     //to get an object at a specific index you call usernames[index]
  }

在回答您更新的问题时,我认为您需要将角色转换为字符串。像

这样的东西
  let myCharacterAsAString = String(i)
  print("abc array contents: " + myCharacterAsAString);
  if(myCharacterAsAString == theUser)
  {
    print("Barber");
    barb = true;
    break;
  }
  print("USER " + theUser);
  barb = false;
  print("\n");
}

答案 2 :(得分:0)

我相信Swift的最新版本已经废除了C风格的for-loop。 这可能不是非常有用,但在Swift中迭代的方式可能是for-in循环

for username in usernames
{
    if username == USER
    {
        b = true
        break
    }
    b = false
}