我正在学习使用远程sql进行注册。我只要求用户输入电子邮件地址和密码,然后按"注册"按钮。注册信息将存储在远程数据库中。应用程序构建成功。但是,当我输入电子邮件地址和密码时,应用程序将停在句子处。
let json = try! NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
说它有错误
EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
我也看一下输出
"fatal error: 'try!' expression unexpectedly raised an error:
Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo=
{NSDebugDescription=No value.}: file
/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-
700.1.101.15/src/swift/stdlib/public/core/ErrorType.swift, line 50 (lldb) ".
我不知道如何处理它。请帮忙。感谢。
答案 0 :(得分:1)
当您使用带有感叹号的try
时,您告诉编译器您不关心错误,并且因为您已经这样做了,那么当您尝试强制转换数据时,会发生错误它只会崩溃,而不是进入catch块告诉你错误是什么。要安全地执行此操作并找出潜在错误,您应该这样做:
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
} catch (_) {
//here you can get access to all of the errors that occurred when trying to serialize
}
在执行此操作之前,您应该进行简单的检查以查看if data != nil { /**try to serialize here*/ }