我试图找出如何遍历此用户名数组,但我不确定语法。我在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;
答案 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
}