在下面的代码中,使用名称列表初始化数组中的图像。我希望图像的顺序与名称数组的顺序一致。这是我尝试过的,但收到错误消息:
线程 1:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码 = 0x0)
控制台说:致命错误:数组索引超出范围(lldb)代码
class NonameTableViewController: UITableViewController {
var Names = [" Ferro", "Korean", "HUH?","CatCafe", "UINITY", "FAKESTORE" ,"IRANOUTOFNAMES", "OKAY", "KEEP CODING"]
var Images = ["cafedeadend.jpg", "homei.jpg", "teakha.jpg", "cafelois1.jpg"," petiteoyster.jpg", "forkeerestaurant.jpg"]
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIndentifier = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIndentifier, forIndexPath: indexPath)
//configure cell
cell.textLabel?.text = Names[indexPath.row]
cell.imageView?.image = UIImage(named: Images[indexPath.row])
return cell
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return Names.count
}
问题是数组没有相同数量的元素。第一个有 9,第二个只有 6。因此该行:
它会给你这个错误,因为你试图访问一个
Images
不存在的数组索引,因为你可以访问的最大值是Images.count - 1
. 尝试向数组中添加更多名称Images
或从数组中删除名称,以Names
使它们具有相同数量的元素。我要做的是在访问之前检查这些索引中是否有信息,例如:
顺便说一句,按照惯例,变量名(Names, Images)应该以小写(names, images)开头;)
我建议
Images.xcassets
您使用每个图像的名称创建一个新组并在其中添加图像。这将从中间删除数组var Images = ["cafedeadend.jpg" .....]
,您可以使用图像的名称作为名称并调用图像。