2017-10-10 48 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