【swift】 使用bmob后端云进行增删改查以及上传文件的部分代码

来源:互联网 发布:tomcat部署java项目 编辑:程序博客网 时间:2024/05/22 05:30

bmob后端云作为国内非常不错的后端云平台,提供了丰富的后端云服务,也让开发者能够用几行代码搞定对于表的增删改查操作。

然而bmob所提供的类库文档是OC的,这对于笔者这种用swift进行开发的人造成了一定的不便。

因此笔者在这里分享一下笔者常用的bmob后端云的swift代码。

(至于如何配置bmob后端云……自行百度吧,教程写得都很好,笔者就不献丑了哈)

//添加一张表,并且新建一列数据(表名,列名,内容)

   func insertData(_ className:String, key:String, content:String){

       //创建表

       let object = BmobObject(className: className)

       //设置数据对象(我们可以多次使用setObject方法,来达到新建多个列的目的)

        object?.setObject(content, forKey: key)

       //存储到云

        object?.saveInBackground { (ret, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

                print("insert successful")

            }

        }

    }



   //按条件查询(表名,列名,查询内容),并输出结果

   func getDataWithKey(_ className:String, keyName:String, queryItem:String){

        //根据表明创建查询对象

       let query = BmobQuery(className: className)

       //添加约束(有以下约束条件,可以根据自己的需要修改)

        query?.whereKey(keyName, equalTo: queryItem)//keyNamequeryItem相等

//        query?.whereKey(keyName, notEqualTo: queryItem)//keyNamequeryItem不相等

//        query?.whereKey(keyName, lessThan: queryItem)//小于

//        query?.whereKey(keyName, lessThanOrEqualTo: queryItem) //小于或等于

//        query?.whereKey(keyName, greaterThan: queryItem) //大于

//        query?.whereKey(keyName, greaterThanOrEqualTo: queryItem) //大于或等于

        

        query?.findObjectsInBackground { (allObjects, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

                print(allObjects!)

            }

        }

    }

    

   //按条件查询多个对象(表名,列名,存在一个数组中的多个查询内容),并输出结果

   func getDataWithKey(_ className:String, keyName:String, queryItems:[AnyObject]){

       let query = BmobQuery(className: className)

        query?.whereKey(keyName, containedIn: queryItems)//queryItems中的所有值中匹配keyName

//        query?.whereKey(keyName, notContainedIn: queryItems)//queryItems中的所有值中排除keyName

        

        query?.findObjectsInBackground { (allObjects, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

                print(allObjects!)

            }

        }

    }

    

   //查询某个列是否有值(表名,列名,查询内容),并输出结果

   func getDataWithKey(_ className:String, keyName:String){

       let query = BmobQuery(className: className)

        query?.whereKeyExists(keyName)

        

        query?.findObjectsInBackground { (allObjects, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

                print(allObjects!)

            }

        }

    }

    

   //按照升序或降序排列(表名,列名,查询内容),并输出结果

   func orderData(_ className:String, keyName:String){

       let query = BmobQuery(className: className)

        query?.order(byAscending: keyName)//按照升序排列

//        query?.orderByDescending(keyName)//按照降序排列

        query?.findObjectsInBackground { (allObjects, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

                print(allObjects!)

            }

        }

    }

    

   //按条件查询(表名,列名,查询内容),并删除

   func getDataWithKeyAndDelete(_ className:String, keyName:String, queryItem:String){

       let query = BmobQuery(className: className)

        query?.whereKey(keyName, equalTo: queryItem)

        query?.findObjectsInBackground { (allObjects, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

               for item in allObjects!{

                   //在云端删除

                    (itemas AnyObject).deleteInBackground({ (ret, error)in

                       if ret{

                            print("delete successful")

                        }

                    })

                }

            }

        }

    }

    

   //按条件查询(表名,列名,查询内容,更新的列,更新的内容),并更新

   func getDataWithKeyAndUpdate(_ className:String, keyName:String, queryItem:String, newKey:String,content:String){

       let query = BmobQuery(className: className)

        query?.whereKey(keyName, equalTo: queryItem)

        query?.findObjectsInBackground { (allObjects, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

               for item in allObjects!{

                    (itemas AnyObject).set(content, forKey: newKey)

                   //在云端更新

                    (itemas AnyObject).updateInBackground(resultBlock: { (ret, error)in

                       if(error != nil){

                            print("error is\(error?.localizedDescription)")

                        }else{

                            print("update successful")

                        }

                    })

                }

            }

        }

    }

    

    //上传文件至bmob

   func uploadFile(_ file:BmobFile){

        print("start upload")

       //储存至云端

        file.save{ (ret, error)in

           if(error != nil){

                print("error is\(error?.localizedDescription)")

            }else{

                print(file.url)//文件的地址

            }

        }

    }

    

   //根据url删除储存于bmob上的文件(需要提供一个存放url的,String类型的数组)

   func deleteFile(_ url:[String]){

        BmobFile.filesDeleteBatch(with: url) { (url, isSuccessful, error)in

            print("error\(error)")

            print("isSuccessful\(isSuccessful)")

        }

    }

有了以上增删改查以及上传文件的方法,大家就可以愉快地用swift对于bmob后端云进行操作了~

当然,更详细的信息请参考Bmob开发文档:

https://docs.bmob.cn/data/iOS/l_swift_develop/doc/index.html


总之就是这样咯,如有错误,请指正~


阅读全文
0 0
原创粉丝点击