Swift /如何检查是否存在可选值

时间:2016-09-13 19:20:05

标签: ios swift

我的Array NSDictionary名为deejayTweetsDictionary。在可选的密钥likes中,ArrayNSDictionary

现在我想检查一下:user == likes?.valueForKey(user) as! String

只要userlikes范围内,我的代码就可以正常运行。如果我使用其他帐户登录 - 使用其他帐户user,该应用程序会崩溃:

 if likes?.valueForKey(user) as! String == user {

如果likes是可选的并且能够包含不同的user NSDictionaries,我如何查看我的if语句?

        let tweets = deejayTweetsDictionary[indexPath.row]

        let likes = tweets.valueForKey("likes")
        let user = backendless.userService.currentUser.objectId

        if likes != nil {

            if likes?.valueForKey(user) as! String == user {
                cell.liked = 1
            } else {
                cell.liked = 0
            }
        }

enter image description here

再次:likes可能包含无穷大的[user:user]

问题:如果user不在likes范围内,如何查看我的if语句?非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

崩溃是因为强行打开线

if likes?.valueForKey(user) as! String == user {

尝试这种方式:

if let userExist = likes?.valueForKey(user) as? String where userExist == user {

       //Do your work.
}

您必须使用此可选绑定或保护关键字。

答案 1 :(得分:1)

我不确定我是否理解你的答案。打开可选值时,您的应用会崩溃吗?

// 1. Unwrap
if let likesUser = likes?.valueForKey(user) as? String {
    if user == likesUser {
        //...
    }
}

// 2. Using guard
guard let likesUser = likes?.valueForKey(user) as? String else {
    return
}

if likesUser == user {
    //...
}