在 Parse Server 中向我的数组添加唯一值 (swift 3)

Add unique values to my array in Parse Server (swift 3)

我的 Parse Server 有一个名为 "BooksAddedByUser" 的 class,它有 3 列:

  1. objectId
  2. user - 包含 PFUser.current()
  3. 的用户名
  4. ISBNArray - 用户添加的图书的 ISBN

我想将新添加的 bookNumber 添加到 ISBNArray 中,前提是它还不存在于该数组中。但是,每当我 运行 下面的代码时,它都会在 class "BooksAddedByUser" 中创建具有相同用户名的新 objectId。而且它也不检查 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!")

        }

    }

您可以使用以下方法检查数组中是否存在对象:

if arrObjects.contains(where: { [=10=].bookNumberPropertyName == "bookNumber" }) {
     print("Book exists")
}