2

我正在开发一个基于 CloudKit 的项目,在该项目中使用排序描述符从数据库中获取最新结果会非常有帮助。

func getConversationPosts(for targetConversation: MessageConversation, completionHandler: @escaping ([MessagePost]) -> Void) {
       var post = MessagePost()
       let getRecordsOperation = CKQueryOperation()
        getRecordsOperation.qualityOfService = .userInteractive
        getRecordsOperation.resultsLimit = 1
        getRecordsOperation.query = CKQuery(recordType: "MessagePost", predicate: NSPredicate(format: "conversationName = %@", targetConversation.conversationID.recordName))
        getRecordsOperation.query?.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] // If you comment this out results are returned
        /*getPostsOperation.queryCompletionBlock = {(searchCursor, error) in
            print("sQ: \(searchCursor)")
        }*/
        getRecordsOperation.recordFetchedBlock = {(postRecord) in
            let newPost = MessagePost()
            newPost.textContent = postRecord.value(forKey: "textContent") as! String
            newPost.poster = User(userName: postRecord.value(forKey: "postUser") as! String)
           // posts.append(newPost)
            post = newPost
        }
        getRecordsOperation.completionBlock = {() in
            completionHandler(post)
        }
        OperationQueue().addOperation(getRecordsOperation)
}

sortDescriptors如果删除添加的行,上述代码始终有效。即使没有结果限制,如果添加了任何排序描述符,recordFetchedBlock甚至都不会调用,但完成块是。这可能是什么原因造成的?

4

0 回答 0