Ios Swift/如何检查可选值的存在

Ios Swift/如何检查可选值的存在,ios,swift,Ios,Swift,我有一个NSDictionary的数组,名为deejayTweetsDictionary。在可选键likes中有NSDictionary的Array 现在我想检查:user==likes?.valueForKey(user)as!字符串 只要用户在喜欢的范围内,我的代码就可以正常工作。如果我使用另一个帐户登录-使用另一个用户,则应用程序会在以下情况下崩溃: if likes?.valueForKey(user) as! String == user { 如果likes是可选的,并且能够包含不

我有一个
NSDictionary
数组
,名为
deejayTweetsDictionary
。在可选键
likes
中有
NSDictionary
Array

现在我想检查:
user==likes?.valueForKey(user)as!字符串

只要用户喜欢的范围内,我的代码就可以正常工作。如果我使用另一个帐户登录-使用另一个
用户
,则应用程序会在以下情况下崩溃:

 if likes?.valueForKey(user) as! String == user {
如果
likes
是可选的,并且能够包含不同的
用户
NSDictionary
,如何检查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
            }
        }

同样:
likes
可能包含无穷多个
[user:user]


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

碰撞是由于线路中的强制展开造成的

if likes?.valueForKey(user) as! String == user {
试着这样做:

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

       //Do your work.
}

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

我不确定是否正确理解您的答案。你的应用程序在展开可选值时崩溃

// 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 {
    //...
}

请阅读Swift语言指南中的“基础知识”一章,非常感谢您的努力,但另一个答案很容易让meGlad帮助您。