1

我尝试使用 CloudKit 获取记录。我使用 Apple 的示例。

我可以保存记录,但我无法获取它们..

这是获取已保存记录的代码:

func fetchRecords(completionHandler: ((NSArray!) -> Void)!) {
    var predicate = NSPredicate(value: true)
    var query = CKQuery(recordType: "type", predicate: predicate)
    /*self.publicDatabase.performQuery(query, inZoneWithID: nil, { (results:[AnyObject]!, error:NSError!) -> Void in
    if (error){
    println("An error occured in \(NSStringFromSelector(__FUNCTION__)) \(error)");
    } else {
    completionHandler(results)
    }
    })*/

    var operation = CKQueryOperation(query: query)

    var results = NSMutableArray()

    operation.recordFetchedBlock = { (record:CKRecord!) -> Void in
        results.addObject(record)
    }

    operation.queryCompletionBlock = { (cursor:CKQueryCursor!, error:NSError!) -> Void in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            if (error) {
                // Error Code 11 - Unknown Item: did not find required record type
                if (error.code == 11) {

                    // Since schema is missing, create the schema with demo records and return results

                }
                else {
                    // In your app, this error needs love and care.
                    println("An error occured in \(NSStringFromSelector(__FUNCTION__)): \(error)");
                    abort();
                }
            } else {
                completionHandler(results)
            }
        })
    }

    self.publicDatabase.addOperation(operation)
}

当我运行它时,“abort()”被调用,我在控制台中得到这个:

fetchRecords 中发生错误:

感谢您的帮助。

4

2 回答 2

0

我认为问题在于您创建谓词的方式。未指定要查询的列/属性。

代替:

var predicate = NSPredicate(value: true)

你应该按照以下方式做一些事情:

var predicate = NSPredicate(format: "someColumn == true")
于 2014-08-11T02:52:43.183 回答
0

尝试更换

if (error) 

if (error != nil)
于 2015-07-16T17:24:43.880 回答