我的Array
NSDictionary
名为deejayTweetsDictionary
。在可选的密钥likes
中,Array
是NSDictionary
。
现在我想检查一下:user == likes?.valueForKey(user) as! String
。
只要user
在likes
范围内,我的代码就可以正常运行。如果我使用其他帐户登录 - 使用其他帐户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
}
}
再次:likes
可能包含无穷大的[user:user]
问题:如果user
不在likes
范围内,如何查看我的if语句?非常感谢帮助。
答案 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 {
//...
}