簡體   English   中英

快速遍歷數組時語法有麻煩

[英]Having trouble with syntax in swift looping through an array

我試圖弄清楚如何遍歷此用戶名數組,但不確定語法。 我在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");
}

我得到錯誤

二進制運算符“ +”不能應用於類型為“字符串”和“字符”的操作數

二進制運算符'=='不能應用於'Character'和'String'類型的操作數

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

或如果您需要訪問當前項目的索引:

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

以上所有這些工作,但我最喜歡的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");
}

我相信Swift的最新版本已經取消了C樣式的for循環。 這可能不是超級有幫助,但是在Swift中進行迭代的方法可能是使用for-in循環

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM