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

Posted

技术标签:

【中文标题】在 Parse Server 中向我的数组添加唯一值(swift 3)【英文标题】:Add unique values to my array in Parse Server (swift 3) 【发布时间】:2017-10-10 12:02:12 【问题描述】:

我的 Parse Server 有一个名为“BooksAddedByUser”的类,它有 3 列:

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

我想将新添加的bookNumber 添加到 ISBNArray 中,前提是它尚不存在于该数组中。但是,每当我在下面运行我的代码时,它都会在“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!")

        

    

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我应该把这段代码放在哪里?另外,我还需要query.whereKey("ISBNArray", contains: bookNumber)吗?对不起,这里是菜鸟 在将bookNumber 插入“ISBNArray”之前应进行检查。如果您只将 bookNumber 直接插入 ISBNArray 而不是插入对象,那么只需 if arrObjects.contains("bookNumber") print("Book exists") 就可以完成这项工作。 我收到一条错误消息,提示“无法将 'String' 类型的值转换为预期的参数类型 'PFObject'” 请给我看你的新代码。同时分享PFObject结构。 我已经更新了上面的代码。我将 Parse 框架导入到我的项目中,这就是我得到 PFObject 结构的地方:docs.parseplatform.org/ios/guide/#objects

以上是关于在 Parse Server 中向我的数组添加唯一值(swift 3)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OnChangeText 中向我的组件 inputText 添加两个状态

如何在我的程序中向我的对象和屏幕周围添加碰撞?

如何在我的视图控制器中向我的“全部删除”和“保存”按钮添加警报?

在OCaml中向我的AST添加行信息

如何防止 Visual Studio 2010 在 C++ 中向我的项目添加大型 SQL 文件?

如何在 Mac Os X 中向我的可可应用程序的屏幕添加信息