2017-10-10 12 views
0

Mon Parse serveur a une classe appelée "BooksAddedByUser", qui dispose de 3 colonnes:Ajouter des valeurs uniques à mon tableau dans Parse Server (rapide 3)

  1. objectId
  2. utilisateur - contient le nom d'utilisateur de la PFUser .current()
  3. ISBNArray - ISBN des livres ajoutés par l'utilisateur

Je voudrais ajouter le nouveau ajouté bookNumber dans le ISBNArray que si elle n'existe pas dans le tableau qui encore. Cependant, chaque fois que je lance mon code ci-dessous, il crée de nouveaux objectIds avec le même nom d'utilisateur dans la classe "BooksAddedByUser". Et il ne vérifie pas non plus si bookNumber existe déjà. Je ne suis pas sûr de ce qui se passe honnêtement.

let booksAddedByUser = PFObject(className: "BooksAddedByUser") 
    booksAddedByUser["user"] = PFUser.current()?.username 

    let query = PFQuery(className: "BooksAddedByUser") 
    query.whereKey("ISBNArray", contains: bookNumber) 
    query.findObjectsInBackground { (objects, error) in 
     if error != nil { 
      print(error) 
     } else { 
      print(self.bookNumber) 

      if let objects = objects { 
       for object in objects { 
        print("book is already added i think") 
       } 
      } 
     } 
    } 

booksAddedByUser.addObjects(from: [bookNumber], forKey: "ISBNArray") 

booksAddedByUser.saveInBackground { (success, error) in 
    if error != nil { 
     print("error saving new book") 
    } else { 
     print("new book saved!") 
    } 
} 

EDIT w/nouveau code:

let booksAddedByUser = PFObject(className: "BooksAddedByUser") 
    booksAddedByUser["user"] = PFUser.current()?.username 


    let query = PFQuery(className: "BooksAddedByUser") 
    query.findObjectsInBackground { (objects, error) in 
     if error != nil { 

      print(error) 

     } else { 

      print(self.bookNumber) 

      if let objects = objects { 

       if objects.contains(bookNumber) { 

        print("book exists") 


       } 

      } 

     } 
    } 

    booksAddedByUser.addObjects(from: [bookNumber], forKey: "ISBNArray") 

    booksAddedByUser.saveInBackground { (success, error) in 

     if error != nil { 

      print("error saving new book") 

     } else { 

      print("new book saved!") 

     } 

    } 

Répondre

0

Vous pouvez vérifier si un objet sort dans le tableau en utilisant ceci:

if arrObjects.contains(where: { $0.bookNumberPropertyName == "bookNumber" }) { 
    print("Book exists") 
} 
+0

Où dois-je placer ce code? Aussi, ai-je encore besoin de 'query.whereKey (" ISBNArray ", contient: bookNumber)'? Désolé, total noob ici – acoustickat

+0

Il doit être vérifié avant d'insérer 'bookNumber' dans" ISBNArray ". Si vous insérez uniquement 'bookNumber' directement dans ISBNArray au lieu d'insérer un objet, alors juste si' arrObjects.contains ("bookNumber") {print ("Livre existe")} 'fera le travail. – Poles

+0

J'ai une erreur qui dit "Impossible de convertir la valeur de type 'String' en type d'argument attendu 'PFObject'" – acoustickat