Xcode Swift:致命错误:索引超出范围
Posted
技术标签:
【中文标题】Xcode Swift:致命错误:索引超出范围【英文标题】:Xcode Swift: Fatal error: Index out of range 【发布时间】:2019-08-25 01:26:50 【问题描述】:首先,我已经检查了有关此致命错误的所有其他问题,我的问题与其他问题不同。
import Firebase
var tappedUserController = TappedUserController()
class TappedUserController: UIViewController
@IBOutlet weak var tappedName: UILabel!
@IBOutlet weak var tappedSport: UILabel!
@IBOutlet weak var tappedZip: UILabel!
@IBOutlet weak var tappedPhone: UILabel!
@IBOutlet weak var tappedEmail: UILabel!
override func viewDidLoad()
super.viewDidLoad()
let peopleView = PeopleViewController()
let number = myIndex
print(number)
let tappedRow = peopleView.people[number]
print(tappedRow)
let tappedUser = FirebaseFirestore.root.collection("users").document()
override public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
myIndex = indexPath.row
print(myIndex)
print(people[0])
performSegue(withIdentifier: "toTappedUser", sender: self)
0 人(姓名:“Test1”,邮编:“95111”,运动:“网球”,电子邮件:“test1@email.com”) 0 致命错误:索引超出范围 2019-08-24 18:12:25.041506-0700 Sports Partner[29777:4579375] 致命错误:索引超出范围 (lldb)
我正在尝试制作一个关于用户和运动的应用。在右侧(或代码的第二部分),当使用didSelectRowAt
时,应该已经将myIndex
变为indexPath.row
。因此,如果我在运行应用程序时点击第一行,它应该让 myIndex
等于 0
。
打印myIndex
时,也会输出0
。
现在,当我打印 people[0]
(应该与 people[myIndex]
相同)时,它会输出我希望它输出的内容,即该特定行的数据。
然后,使用performSegue
,它转到下一个视图控制器,其类位于左侧(或第一段代码)。我试图让另一个变量(数字)等于myIndex
,但它不会改变输出。
打印number
,它再次输出0
。但是当我得到公共类peopleView
和公共数组people
做peopleView.people[number]
时,错误
致命错误:索引超出范围
发生。
我很困惑为什么会发生这种情况,因为打印people[0]
应该与打印people[myIndex]
相同。有人可以解释为什么会这样吗?
编辑
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
guard let TappedUserController = segue.destination as? TappedUserController,
let index = tableView.indexPathForSelectedRow?.row
else
return
tappedUserController.selectedPerson = people[myIndex]
【问题讨论】:
@Sweeper,附有一张图片。它在您的屏幕上不可见吗? 啊哎呀!我忘了打开我的***。无论如何,您都不应该将代码发布为图像。代码是文本,应该这样发布。 @Sweeper,抱歉,我现在就编辑它。 在 viewDidLoad 中你设置了number = myIndex
但myIndex
似乎没有在那个时候定义。但是,我希望这会显示编译器错误。
也许可以尝试使用an extension such as this,这样您就可以在不崩溃和烧毁的情况下捕获错误。
【参考方案1】:
这是一个非常常见的错误。问题是let peopleView = PeopleViewController()
行。
它返回一个全新的控制器实例,它不是故事板中的实例。您需要通过故事板中的 segue 或实例化对控制器的真实引用。
【讨论】:
您好,谢谢。我刚刚看了如何引用场景并在这里找到了解决方案:***.com/questions/48927609/….以上是关于Xcode Swift:致命错误:索引超出范围的主要内容,如果未能解决你的问题,请参考以下文章