在iPhone 5s上使用iOS 8 Swift上的NSUserDefaults后启动EXC_BREAKPOINT,而不是模拟器

时间:2014-07-17 10:06:08

标签: ios swift nsuserdefaults

实施一种方法,用于保存用户登录NSUserDefaults的电子邮件和密码。我的应用程序在iPhone 5s上运行时崩溃,但不在模拟器中运行(按预期工作)。

错误信息是:

dyld:未找到符号:__TWPVSs26AutoreleasingUnsafePointerSs8_Pointer 参考自:/private/var/mobile/Containers/Bundle/Application/76A645B8-3428-452F-AEA4-60BAF6C28819/AppName.app/AppName   预计在:/private/var/mobile/Containers/Bundle/Application/76A645B8-3428-452F-AEA4-60BAF6C28819/AppName.app/Frameworks/libswift_stdlib_core.dylib  in /private/var/mobile/Containers/Bundle/Application/76A645B8-3428-452F-AEA4-60BAF6C28819/AppName.app/AppName

我的NSUserDefaults代码是这样的(不要认为其余部分很重要):

let loggedIn = "yes"
let userDefaults = NSUserDefaults.standardUserDefaults()

userDefaults.setObject(email, forKey:"Email")
userDefaults.setObject(pw, forKey:"Password")
userDefaults.setObject(loggedIn, forKey: "LoggedIn")

userDefaults.synchronize()

这是在用户输入电子邮件和密码并且服务器验证了这些并返回“ok”后设置的。

在prepareForSegue中,我有这段代码:

let navigationController = segue.destinationViewController as UINavigationController

        let vc = navigationController.viewControllers[0] as LoggedInViewController

        // Gets email from saved data
        let userDefaults = NSUserDefaults.standardUserDefaults()
        let sendEmail: String = userDefaults.stringForKey("Email")
        userDefaults.synchronize()

        vc.email = sendEmail

更新: 我已经浏览了崩溃日志并注意到了这一点: enter image description here

我真的不知道怎么读它,但我注意到异常代码0x0000000196442124位于我所包含图像的底部。

_dispatch_mach_msg_send + 1624

这是什么意思?这有帮助吗?

我还标记了NSUserDefaults(如上所示)的所有方法和内容作为注释,以查看它们是否导致了问题。但无论如何应用程序崩溃了..

提前致谢!

2 个答案:

答案 0 :(得分:0)

错误消息说明了有关自动释放内存的信息。 你有快速代码中的任何... Release()函数调用吗?

如果有,请将其评论出来并重试。

答案 1 :(得分:0)

let sendEmail: String = userDefaults.stringForKey("Email")

对我而言,swift被这些行混淆,无法正确推断出类型 它执行.....我不是什么,但它不能从任何对象真正得到!串正确 它在尝试使用sendEmail时崩溃了

请参阅:

Get from AnyObject(NSString) to String