【发布时间】:2014-09-12 05:36:05
【问题描述】:
我有以下两种方法:
func isAuthenticated() -> Bool {
var currentUser: CurrentUser? = self.getCurrentUser()
if currentUser == nil {
return false
}
self.token = getUserToken(currentUser!.username)
if self.token == nil {
return false
}
if !tokenIsValidForUser(self.token!, user: currentUser!) {
return false
}
return true
}
func tokenIsValidForUser(token: AuthenticationToken, user: UserObject) -> Bool {
if token.username != user.username {
return false
}
return true
}
当我调用 isAuthenticated() 时,它在 tokenIsValidForUser() 的第一行以 EXC_BAD_ACCESS 失败,显然是在 CurrentUser 对象上。
我的理解是当对象不再存在时会出现这种错误,但我不明白为什么会这样。
对象类型CurrentUser声明为:
protocol UserObject {
var username: String { get set }
}
class CurrentUser: NSManagedObject, UserObject {
@NSManaged var username: String
}
【问题讨论】:
-
在调用方法“tokenIsValidForUser”之前,打印token和currentUser属性。我怀疑其中一个是 nil。
-
@JoJoe 他们都不是零。但是,有趣的是,如果我在任一对象上
println,例如println(currentUser!)我得到一个空行。如果我println(currentUser!.username)它将打印出用户名的值。 -
嗯,我找不到你的代码有什么问题......也许是其他人。
-
这个问题肯定与 currentUser 相关......现在我认为它可能与它是一个 NSManagedObject 有关。
标签: ios core-data swift protocols exc-bad-access