zoukankan      html  css  js  c++  java
  • 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)")
                })
            }
        }
    
  • 相关阅读:
    SQL PASS 北京2013年6月15日活动照片集
    XML约束文档DTD
    内存管理之虚拟页式分配
    设备驱动中异步通知编程
    王家林 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程
    安装配置netanalyzer/netsnmp3.5.7_rc1
    理解Java对象序列化——Serializable接口
    世界500强高频逻辑推理智力面试题(二)
    2column left navigation 中遇到的问题
    Visual Studio 2010 无法打开 源 文件 "iostream.h"
  • 原文地址:https://www.cnblogs.com/hualuoshuijia/p/12048708.html
Copyright © 2011-2022 走看看