gpt4 book ai didi

arrays - SWIFT OS X - 闭包语句内的多个语句,调试工具?

转载 作者:行者123 更新时间:2023-11-30 14:13:55 25 4
gpt4 key购买 nike

我使用以下代码来过滤大数组:

var arrayOfSelectedRowDetails = self.projectRowDetails.filter(
{ $0.projectNumber == self.projectNumberArray[selectedRow] }
)

通常情况下,代码运行良好,没有任何问题。但在一种情况下(在我从持久存储中删除了一些管理对象之后),然后重新运行代码,我在运行时收到 EXC_BAD_ACCESS(代码 = 1,地址 = 0x0)错误。

我设置了一个中断并单步执行该语句的运行时。它是一个从核心数据实体构建的大型数组(使用 fetch 语句) - 因此需要很长时间。当我在前十几个索引上单步执行代码时,代码运行正常 - 当我删除中断并让它运行时,就会出现错误。

是否可以在闭包语句中使用 println() 来协助调试?我尝试了多种不同的语法,但无法使其工作。

或者,是否可以在闭包中设置错误捕获语句,以便代码通过break或abort()语句停止?

从根本上来说,我试图确定错误发生时数组的索引,以便我可以获得足够的信息来调试删除函数(我认为这是错误所在)。当错误发生时,我似乎无法从可用的信息中确定索引。

这是我第一次尝试用 Swift 编程并使用闭包,所以我正在边学习边学习。如果我问的是基本问题,请道歉。我在其他地方找不到类似的问题和有效的答案。

最佳答案

您可以在 Xcode 中设置异常断点(示例请参见 here )。

此外,我建议您将对 self.projectNumberArray 的访问移出闭包:

let pn = self.projectNumberArray[selectedRow] 
var arrayOfSelectedRowDetails = self.projectRowDetails.filter(
{ $0.projectNumber == pn }
)

更改可能无法解决问题,但至少有助于调试。

最后,如果您想打印索引,以下方法可能会起作用:

let pn = self.projectNumberArray[selectedRow] 
var index = 0
var arrayOfSelectedRowDetails = self.projectRowDetails.filter(
{ println(index++); return $0.projectNumber == pn }
)

关于arrays - SWIFT OS X - 闭包语句内的多个语句,调试工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31429630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com