我有一个包含3个文本字段和一个图像(CKAsset)的表。图像很大。我想查询表,只接收2个文本字段而不下载图像。有没有办法指定我只想要2个文本字段?
这是我使用的代码:
let predicate = NSPredicate(format: "CloudID = %@", tempCloudID)
let query = CKQuery(recordType: "Images", predicate: predicate)
query.sortDescriptors = [NSSortDescriptor(key: "Field1", ascending: true)]
query.sortDescriptors = [NSSortDescriptor(key: "Field2", ascending: true)]
仍然无法查询表,它们通过引用正确存储,并在删除拥有表时被删除。
func test() {
//This works for storing my images, and I can delete the parent and it successfully removes all images. That’s what I want.
let parentId = CKRecordID(recordName: uploadList[uploadRecord].CloudID)
let parent = CKReference(recordID: parentId, action: CKReferenceAction.DeleteSelf)
let outputPath = NSHomeDirectory().stringByAppendingString("/Library/Pictures/" + uploadList[uploadRecord].File)
let File: CKAsset? = CKAsset(fileURL: NSURL(fileURLWithPath: outputPath))
let imageRecord = CKRecord(recordType: "Images")
imageRecord.setObject(uploadList[uploadRecord].R, forKey: "R")
imageRecord.setObject(uploadList[uploadRecord].A, forKey: "A")
imageRecord.setObject(parent, forKey: "Reference")
imageRecord.setValue(File, forKey: "Image")
publicDB.saveRecord(imageRecord, completionHandler: ({returnRecord, error in
if let err = error {
self.notifyUser("Save Image Error", message:
err.localizedDescription)
print("Image Upload Error")
} else {
dispatch_async(dispatch_get_main_queue()) {
print("Image Sent Successfully")
// Mark image to be deleted?
}
}
}))
}
我尝试通过addoperation查询并执行查询。我做错了什么,不确定它是什么。
答案 0 :(得分:2)
您可以通过两种方式解决此问题:
P.S。查询下面提到的参考可以使用以下代码完成:
let parentId = CKRecordID(recordName: referenceRecordName)
let parent = CKReference(recordID: parentId, action: CKReferenceAction.None)
let query = CKQuery(recordType: recordType, predicate: NSPredicate(format: "%K == %@", referenceField ,parent))