ios - 我如何限制cloudkit中给出的结果数量

标签 ios xcode swift icloud cloudkit

这是我从 icloud 检索数据的代码。我如何将它检索的数据数量限制为 25?我之前看到这个问题得到了回答,但我不确定如何将它应用到我的代码中?你能帮忙吗?

这是我之前看到的回答问题的地方。请确切地告诉我如何将它添加到我的代码中,或者只是在代码中给出答案。

CKQuery from private zone returns only first 100 CKRecords from in CloudKit

CloudKit Batch Fetches?

import UIKit
import CloudKit

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

    @IBOutlet weak var collectionView: UICollectionView!

    var EventsArray:[String] = [String]()

    var container:CKContainer?
    var privateDatabase:CKDatabase?
    var publicDatabase:CKDatabase?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.container = CKContainer.defaultContainer()
        self.privateDatabase = self.container?.privateCloudDatabase
        self.publicDatabase = self.container?.publicCloudDatabase


        self.collectionView.dataSource = self
        self.collectionView.delegate = self

        self.LoadEvents()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func LoadEvents() {

            let predicate:NSPredicate = NSPredicate(value: true)
            let query:CKQuery = CKQuery(recordType: "Data", predicate: predicate)
            query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

            if let database = self.publicDatabase {
                database.performQuery(query, inZoneWithID: nil, completionHandler: { (records:[AnyObject]!, error:NSError!) in

                    if error != nil {
                      self.alert("Error: \(error.localizedDescription)", Message: "Make sure iCloud is turned on and you are connected to the internet")
                      self.loading.hidden = true
                    }
                    else {
                        dispatch_async(dispatch_get_main_queue()) {

                            self.EventsArray.removeAll(keepCapacity: false)

                            for record in records {
                                let usernameRecord:CKRecord = record as CKRecord
                                if let event = usernameRecord.objectForKey("Events") as? String{
                                    self.EventsArray.insert(event, atIndex: 0)
                                }
                            }

                            //update data
                            self.collectionView.reloadData()
                            self.loading.hidden = true
                        }
                    }
                    })
                }}

最佳答案

您应该使用 CKQueryOperation 而不是 performQuery。 然后你可以像这样设置结果限制:

operation.resultsLimit = 25

在这个问题中,您可以看到如何使用 CKQueryOperation:CKQuery from private zone returns only first 100 CKRecords from in CloudKit

关于ios - 我如何限制cloudkit中给出的结果数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29606966/

相关文章:

ios - 向 GMSMapView 添加手势识别器以获得 .begin/.ended/.change 手势

ios - 如何使用 - swift - SpriteKit 编写将在特定时间运行函数的协议(protocol)

xcode - 如何更改 xcode 中快捷方式生成的注释样式?

ios - xcode、macbook 和复制缓冲区插入 iPhone?

swift - 如何将指数值转换为十进制值

swift - 滚动横幅 tvOS

ios - 是否可以弹出到 n - 2 或 n - 3 View ?

iphone - UItextView 文本隐藏

swift - 如何为标签添加约束?

IOS - Firebase - 此电子邮件格式错误