二维数组给出了索引超出范围内的错误
问题描述:
我有一个“Team”对象的二维数组,并且当我尝试从2d数组打印附加数组时,它有一个“Team”数组,它会给出错误。在下面的代码打印出错。二维数组给出了索引超出范围内的错误
self.first_array = []
for i in 0..<json["LeagueStage"][0]["LeagueTable"].count {
guard let name = json["LeagueStage"][0]["LeagueTable"][i]["name"].string,
let id = json["LeagueStage"][0]["LeagueTable"][i]["id"].int,
let teamId = json["LeagueStage"][0]["LeagueTable"][i]["TeamID"].int,
let points = json["LeagueStage"][0]["LeagueTable"][i]["points"].string,
let played = json["LeagueStage"][0]["LeagueTable"][i]["played"].string,
let wins = json["LeagueStage"][0]["LeagueTable"][i]["wins"].string,
let draws = json["LeagueStage"][0]["LeagueTable"][i]["draws"].string,
let defeits = json["LeagueStage"][0]["LeagueTable"][i]["defeits"].string,
let goalsfor = json["LeagueStage"][0]["LeagueTable"][i]["goalsfor"].string,
let goalsagainst = json["LeagueStage"][0]["LeagueTable"][i]["goalsagainst"].string,
let average = json["LeagueStage"][0]["LeagueTable"][i]["average"].int,
let rank = json["LeagueStage"][0]["LeagueTable"][i]["rank"].int,
let hasTeamLogo = json["LeagueStage"][0]["LeagueTable"][i]["HasTeamLogo"].bool,
let imageUrl = json["LeagueStage"][0]["LeagueTable"][i]["TeamLogo"].string
else {
let dataFetch: [AnyHashable : Any] =
[
NSLocalizedDescriptionKey : NSLocalizedString("Veri Yok", value: "Hata", comment: "") ,
NSLocalizedFailureReasonErrorKey : NSLocalizedString("Veri Yok", value: "Hata", comment: "") ]
let err = NSError(domain: "ShiploopHttpResponseErrorDomain", code: 401, userInfo: dataFetch)
self.delegate?.errorUpdating(err as NSError)
return
}
let temp_team = Team(id: id,
teamId: teamId,
name: name,
points: Int(points)!,
played: Int(played)!,
wins: Int(wins)!,
draws: Int(draws)!,
defeits: Int(defeits)!,
goalsfor: Int(goalsfor)!,
goalsagainst: Int(goalsagainst)!,
average: average,
rank: rank,
HasTeamLogo: hasTeamLogo,
imageurl: imageUrl
)
self.first_array.append(temp_team)
}
}
self.teams.append(first_array)
print(teams[0][0].name)
初始化部分
// MARK: - Variables
var teams = [[Team]]()
var first_array = [Team]()
我敢肯定有与first_array没有问题,因为当我做类似下面,它的工作原理。
self.teams = [self.first_array, self.first_array]
错误:
fatal error: Index out of range
,我可以用
print(self.teams.popLast()?[0].name)
答
如果上面的代码是正确的,那么问题是self.teams
与本地变量var teams = [[Team]]()
不一样。与self.first_array
和本地变量first_array
相同。希望你明白了。
要解决该问题,请执行下列操作:
,而不是写 var teams = [[Team]]() var first_array = [Team]()
写
self.teams = [[Team]]() self.first_array = [Team]()
或
,而不是self.teams.append(self.first_array)
,写teams.append(first_array)
然后self.teams = teams
+0
我添加了整个代码。你可以请检查一下吗? – eonr
答
我在下面的代码中调用问题的调用函数。
self.teams = [[]]
我改变它并且它现在工作。
self.teams = [[],[]]
什么是错误日志准确地说? – Tushar
@Tushar致命错误:索引超出范围 – eonr
Swift约定是对变量使用lowerCamelCase名称,而不是snake_case。另外,你应该在'var'变量和'append'调用上'let'常量和数组文字。 – Alexander