使用JSON,mysql和php的用户注册问题:EXC_BAD_INSTRUCTION(code = EXC_I386_INVOP,subcode = 0x0)

时间:2016-01-23 18:44:46

标签: swift

我正在学习使用远程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) ". 

我不知道如何处理它。请帮忙。感谢。

1 个答案:

答案 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*/ }