2015-09-28 1 views
1

Я делаю простое приложение и реализую часть userInformation. Пользователь может редактировать свою информацию, но у меня возникают проблемы с тем, что если пользователь не помещает какую-либо информацию, он будет сбой при попытке получить данные из неопределенного столбца.Как проверить, не определено ли значение в моем анализе?

Это мой код для извлечения пользовательских данных. Если есть данные для синтаксического анализа, это не приведет к сбою, иначе это произойдет.

let nickName = PFUser.currentUser()?.objectForKey("nickName") as! String 

Так что я спрашиваю, как я могу обработать получение неопределенного значения перед сбоем? (напишите полный код для меня)

Есть ли способ проверить значение, прежде чем я его получу?

///like this 
if (value in parse == "ABC") { 
    print("yes") 
} 
+0

это может помочь http://stackoverflow.com/questions/25779392/swift-optional-text-in-optional-value – sakhunzai

+0

Вы хотите сказать, это сбой, если он не может распаковать в строка - просто прекратите делать это ... – Wain

+0

Я не совсем понимаю qu estion. Почему бы вам не проверить, возвращает ли объект objectForKey нуль или нет, прежде чем разворачивать базовое значение? –

ответ

0

Здесь, попробуйте этот код:

let query = PFUser.query() 
    query!.whereKey("username", equalTo: "abcd") 
    query!.findObjectsInBackgroundWithBlock({ 
     (object, error) -> Void in 
     if (object != nil) { 
      if(object!.count != 0) 
      { 
       for messageObject in object! { 
        let photoUploaded : Bool = ((messageObject as! PFObject)["photoUploaded"] as? Bool)! 
        if (photoUploaded == true) { 
         if let userPicture = messageObject["profilePic"] as? PFFile { 
          userPicture.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in 
           if (error == nil) { 
            let imageData = imageData 
            let image = UIImage(data: imageData!) 
            self.createrImage.image = image 
           } else { 
            // Error handling 
           } 
          } 
         } 

        } 
       } 
      } // object is undefined here 
     } // else is added here to get object is nill 
    }) 

Я проверяю, если фотография будет загружена с пользовательскими данными. Если вы загрузите, я получу true как Bool значение, если не загружено, то false. Если не определено, добавьте еще часть и точку останова в комментарии, чтобы избежать сбоя. обновить меня в случае каких-либо вопросов

2

, если вы хотите получить объекты (только определенные объекты) через запрос, то и нужно, чтобы увидеть

query.whereKeyExists("nickName"); 

если и просто хотят проверить значение, извлеченный coulmn в определяются или нет может просто использовать

if(user["nickName"]) 
{ 
    // nickname exists for user ; 
} 
Смежные вопросы