2016-09-13 2 views
1

У меня есть Array от NSDictionary по имени deejayTweetsDictionary. В пределах опционного ключа likes находится Array от NSDictionary.Быстрое/как проверить наличие дополнительного значения

Теперь я хочу проверить, есть ли: user == likes?.valueForKey(user) as! String.

Мой код работает нормально, пока user находится в пределах likes. Если бы я войти в систему с другой учетной записью - с другой user, приложение падает на:

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

Как я могу проверить мой, если заявление, если likes является необязательным и может содержать различную userNSDictionaries?

 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? Помощь очень ценится.

+0

Прочтите главу * Основы * в Руководстве по быстрому языку – vadian

ответ

2

Авария из-за вынужденную развёртку в линии

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

Попробуйте так:

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

     //Do your work. 
} 

Вы должны использовать это дополнительное обязательное или сторожевой ключевое слово.

+0

это работает идеально для меня. большое спасибо –

+0

Рад помочь вам. – Amit89

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

Большое вам спасибо за ваши усилия, но другой ответ сделал это легко для меня –

Смежные вопросы