2016-07-19 1 views
1

Travailler avec PFObject et PFQuery Je ne parviens pas à déboguer ce morceau de code:Comment utiliser PFQuery getObjectWithId?

....... 

if let someContents = object.valueForKey("contents") { 
    let query = PFQuery(className: "TheContentList") 
    do {let object = try query.getObjectWithId(someContents.objectId) 
     print(object) 
    } catch { 
     print(error) 
    } 
} 

Avec le code ci-dessus je reçois ce message de compilateur pour la ligne avec getObjectWithId:

Cannot convert value of type 'String?!' to type 'String' in coercion 

Si je change:

query.getObjectWithId(someContents.objectId) 

à:

query.getObjectWithId("xyz23AcSXh") 

Il compile et à l'intérieur du débogueur je reçois ceci:

(lldb) p someContents.objectId 
(String?!) $R4 = "xyz23AcSXh" 

Et le programme imprime un objet comme prévu.

Donc la question est: comment dois-je écrire la ligne query.getObjectWithId pour pouvoir utiliser ce qui est dans someContents?

+0

Avez-vous essayé avec 'query.getObjectWithId '.. vérifier le point d'exclamation. –

+0

Ce que vous écrivez ne fonctionne pas. Je reçois le message d'erreur du compilateur: 'Valeur du type facultatif 'String?' pas déballé; vouliez-vous utiliser '!' ou '?'? ' Mais suite à ceci:' query.getObjectWithId (someContents.objectId !!) ' fonctionne. Alors vous me mettez sur la bonne voie. Merci beaucoup. – Michel

Répondre

1

Votre propriété objectId, est un Explicitly Unwrapped Optional, d'un Optional. Si vous êtes sûr qu'il contient un String, déballez à l'aide:

let object = try query.getObjectWithId(someContents.objectId!!) 

Sinon, si vous n'êtes pas sûr (! SomeContents.objectId)

if let objectId = someContents.objectId, id = objectId { 
    let object = try query.getObjectWithId(id) 
}