2017-10-10 45 views
0

我的解析服务器有一个名为“BooksAddedByUser”类,它有3列:添加唯一值我在解析服务器阵列(SWIFT 3)

  1. OBJECTID
  2. 用户 - 包含PFUser的用户名.current()
  3. ISBNArray - 图书用户

加我想补充新添加的bookNumber到ISBNArray只有当它没有在数组中还存在的ISBN。但是,无论何时我在下面运行我的代码,它都会在“BooksAddedByUser”类中使用相同的用户名创建新的objectIds。而且它也不检查bookNumber是否已经存在。我不确定实际情况如何。

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!") 
    } 
} 

编辑瓦特/新代码:

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!") 

     } 

    } 

回答

0

你可以,如果一个对象退出阵列中使用此检查:

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

应该在哪里我把这个代码?另外,我仍然需要'query.whereKey(“ISBNArray”,包含:bookNumber)'?对不起,这里的总菜单 – acoustickat

+0

将'bookNumber'插入到“ISBNArray”之前应该检查。如果只是将'bookNumber'直接插入到ISBNArray而不是插入一个对象,那么只要'arrObjects.contains(“bookNumber”){print(“Book exists”)}'就可以完成这项工作。 – Poles

+0

我得到一个错误,说“不能将类型'字符串'的值转换为期望的参数类型'PFObject'” – acoustickat