【发布时间】:2017-02-27 17:12:09
【问题描述】:
我目前正在将我的 swift 文件转换为 swift 3,并且存在一个涉及指针的运行时异常。代码如下:
var sectionChanges:NSArray? = nil
var rowChanges:NSArray? = nil
databaseView.getSectionChanges(§ionChanges!, rowChanges: &rowChanges!, for: notifications, with: mappings)
致命错误:在展开可选值时意外发现 nil
函数签名特化 ) -> () 到@callee_owned (@unowned Swift.UnsafeBufferPointer) -> (@out ()),参数类型:[@callee_owned (@unowned Swift.UnsafeBufferPointer) -> ()]> 的泛型 专业化 Swift.StaticString.withUTF8Buffer ((Swift.UnsafeBufferPointer) -> A) -> A
编辑: getSectionChanges()的定义:
open func getSectionChanges(_ sectionChangesPtr: AutoreleasingUnsafeMutablePointer<NSArray>?, rowChanges rowChangesPtr: AutoreleasingUnsafeMutablePointer<NSArray>?, for notifications: [NSNotification], with mappings: YapDatabaseViewMappings)
请帮忙?!
【问题讨论】:
-
你能重写你的
getSectionChanges让它只返回带有更改数组的元组,而不是使用inout参数吗?相信我,它会在未来为您节省大量时间和精力。 -
getSectionChanges()从何而来,又是如何定义的? -
@user28434 这是一个很好的建议,我没想到。但是有没有办法我可以发送一个可选变量的指针?! GAH 我讨厌这些升级。
-
@MartinR,编辑了问题以包含函数定义。
-
@KoushikKumar,用于定义
getSectionChanges的编辑:将AutoreleasingUnsafeMutablePointer<NSArray>?更改为inout NSArray?。将来最好使用具有正确定义的内容类型的 swift 数组。
标签: ios swift nsarray swift3 xcode8