• Switch之iCloud的使用(CKDatabase)(二)


    CKDatabase的简单使用

    这里需啊哟配合一使用,首先确定用户开启了iCloud,并且iCloud可用

    //添加一条记录
        func addRecord(){
            let id = CKRecord.ID.init(recordName: "1")//设置索引
            let volvo = CKRecord.init(recordType: "person", recordID: id)
            volvo.setObject("liu" as __CKRecordObjCValue, forKey: "name")
            volvo.setObject(18 as __CKRecordObjCValue, forKey: "age")
            volvo.setObject(false as __CKRecordObjCValue, forKey: "isMan")
            
            database.save(volvo) { (record, error) in
                if error == nil{
                    print("成功")
                }else{
                    print("失败")
                }
            }
        }
    
    //查询一条记录
        func queryRecordWithID(){
            let id = CKRecord.ID.init(recordName: "1")
            database.fetch(withRecordID: id) { (record, error) in
                if error != nil{
                    print("查询失败")
                    return
                }
                print("--------name:(String(describing: record?.object(forKey: "name"))) age:(String(describing: record?.object(forKey: "age"))) isMan:(String(describing: record?.object(forKey: "isMan")))")
            }
        }
    
    //修改一条记录
        func updateRecord(){
            let id = CKRecord.ID.init(recordName: "1")
            database.fetch(withRecordID: id) {[weak self] (record, error) in
                if error != nil{
                    print("查询失败")
                    return
                }
                record!.setObject("xiaoming" as __CKRecordObjCValue, forKey: "name")
                self!.database.save(record!, completionHandler: { (record, error) in
                    if error != nil{
                        print("保存失败")
                        return
                    }else{
                        print("保存成功")
                    }
                })
            }
        }
    
    //使用谓词查询数据
        func queryRecordWithPredicate(){
            var predicate = NSPredicate.init(format: "name = %@", "xiaoming1")
            var query = CKQuery.init(recordType: "person", predicate: predicate)
            database.perform(query, inZoneWith: nil) { (records, error) in
                if error != nil{
                    print("查询失败")
                    return
                }
                var tempRecords = records as! [CKRecord]
                if(tempRecords.count < 1){
                     print("没有查询到")
                    return;
                }
                let record = tempRecords[0]
                print("--------name:(String(describing: record.object(forKey: "name"))) age:(String(describing: record.object(forKey: "age"))) isMan:(String(describing: record.object(forKey: "isMan")))")
            }
        }
    
    //获取用户信息
        func queryUserRecordId(){
            let container = CKContainer.default()
            //获取用户信息,必须要使用权限
            container.status(forApplicationPermission: .userDiscoverability) { (status, error) in
                if error != nil{
                    return;
                }
                switch status{
                case .initialState:
                    print("需要授权")
                    self.requestPermissionToAccessUserInfomation()
                case .couldNotComplete:
                    print("获取权限出错")
                case .denied:
                    print("拒绝访问")
                case .granted:
                    print("已授予访问权限")
                    self.findUserInfo()
                   
                }
            }
            
        }
        func requestPermissionToAccessUserInfomation(){
            let container = CKContainer.default()
            container.requestApplicationPermission(.userDiscoverability) { (status, error) in
                if error != nil{
                   return;
                }
                //授权
                switch status{
                case .initialState:
                    print("需要授权")
                case .couldNotComplete:
                    print("获取权限出错")
                case .denied:
                    print("拒绝访问")
                case .granted:
                    print("已授予访问权限")
                    self.findUserInfo()
                    
                }
            }
            
           
        }
        func findUserInfo(){
            let container = CKContainer.default()
            container.fetchUserRecordID { (recordId, error) in
                if error != nil{
                    print("查询ID失败")
                    return
                }
                print("recordName:(String(describing: recordId!.recordName))  (recordId)" )
    
                container.discoverUserIdentity(withUserRecordID: recordId!, completionHandler: { (userInfo, error) in
                    if error != nil{
                        print("查询失败")
                        return
                    }
                    print("firstName:(userInfo!.nameComponents?.familyName)")
                })
            }
        }
    
  • 相关阅读:
    MyString
    Django疑难问题
    mysql 疑难问题-django
    python时间转换 ticks-FYI
    django建议入门-FYI
    Python风格规范-FYI
    scrum敏捷开发☞
    git基本命令
    centos下的安装mysql,jdk
    memcached for .net on windows
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/12048708.html
Copyright © 2020-2023  润新知