我使用的是用Obj-C编写的第三方框架,它有一个函数:
- (NSError *)generateModelForm
If this method is successful it will return nil. If it doesn't return nil, it will return an error which you can check for debugging purposes.
现在,当我使用桥接头并执行所有必需的东西在我的Swift文件中调用此函数时,它总是在第一行崩溃,说“致命错误:在展开可选值时意外发现nil”
我的Swift代码:
if let error = object.generateModelForm()
{
println("Error : \(error)")
}
else
{
println("Successfully generated model form, proceed ahead.")
}
我已经完成了关于link的描述。但它几乎没有帮助我,因为我使用的函数是用Obj-C编写的预定义框架的一部分。
我尝试用,
替换第一行let error = object.generateModelForm() as NSError?
let error : NSError? = object.generateModelForm()
此外,即使尝试直接调用object.generateModelForm()
而没有捕获返回NSError值,它仍然会崩溃。
我在过去的2天里摸不着头脑,任何帮助都会受到赞赏。
答案 0 :(得分:2)
如果'object'是可选项,请尝试object?.generateModelForm()
...使用'?'。
答案 1 :(得分:1)
如果你一直在使用Swift 1.1,你应该在执行时解包,如果让
if let error = object.generateModelForm()? {
//do stuff
}
请注意,if let只允许您执行操作,如果您为if-block内部的作用域创建的常量变量实际上是一个未包装的现有对象。您要做的是将可选项设置为非可选
Swift 1.2(从2015年4月9日开始使用Xcode 6.3提供)你不需要添加它,但是如果你想把它作为NSError转换
if let error = object.generateModelForm() as? NSError {
//do stuff
}