在Swift中无法解包可选值

4
我在使用Parse,获取PFUser的objectId如下所示:
let objectID = PFUser.currentUser().objectId;

但每次我运行我的应用程序并且应用程序到达这一行,我就会得到这个错误:
fatal error: unexpectedly found nil while unwrapping an Optional value

如果我尝试更改为这个:

let objectID = PFUser.currentUser().objectId!;

我无法执行下一行:if (objectID != nil),因为NSString不符合NiLiteralConvertible


1
去掉分号。 - Fogmeister
2个回答

7

试试这个:

    let user: PFUser? = PFUser.currentUser()
    if user != nil
    {
        let objectID = user!.objectId
    }

如果objectId可以为nil:

    let user: PFUser? = PFUser.currentUser()
    if user != nil
    {
        if let objectID = user!.objectId?
        {
            //do something
        }
    }

是的,这就是我一直在思考的东西。 - Fogmeister
1
不要手动解包和检查可选项。对于用户和对象ID,请使用if let。 - devgeek

3

这里的可选项是从PFUser.currentUser()返回的值,而不是objectId

你需要稍微修改一下,因为当前用户可能不存在。

类似于...

if let user = PFUser.currentUser()! {
    let objectID = user.objectId
}

或者说什么其他的东西,不过我还没完全掌握Swift。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接