Ios cloudkit-我不想下载表中的图像
我有一个表,有3个文本字段和一个图像(CKAsset)。图像很大。我想查询表,只接收2个文本字段,不下载图像也。有没有办法指定我只需要两个文本字段 这是我正在使用的代码:Ios cloudkit-我不想下载表中的图像,ios,swift,cloudkit,Ios,Swift,Cloudkit,我有一个表,有3个文本字段和一个图像(CKAsset)。图像很大。我想查询表,只接收2个文本字段,不下载图像也。有没有办法指定我只需要两个文本字段 这是我正在使用的代码: let predicate = NSPredicate(format: "CloudID = %@", tempCloudID) let query = CKQuery(recordType: "Images", predicate: predicate) query.sortDescriptors = [NS
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进行查询并执行查询。我做错了什么,不确定是什么。你可以用两种方法解决这个问题:
let parentId = CKRecordID(recordName: referenceRecordName)
let parent = CKReference(recordID: parentId, action: CKReferenceAction.None)
let query = CKQuery(recordType: recordType, predicate: NSPredicate(format: "%K == %@", referenceField ,parent))
您可以通过两种方式解决此问题:
let parentId = CKRecordID(recordName: referenceRecordName)
let parent = CKReference(recordID: parentId, action: CKReferenceAction.None)
let query = CKQuery(recordType: recordType, predicate: NSPredicate(format: "%K == %@", referenceField ,parent))
我现在只有2个表,我现在没有使用CKReference设置它们,我正在将第二个表中的“CloudID”设置为第一个表中的ID。我查看了CKReference,但不了解使其工作的文档,也找不到好的示例。我不想在不使用正确的CKReference的情况下添加另一个表,因为我必须跟踪另一个“ID”。下一步是获取图像,现在我只需要图像列表供他们选择。我将尝试CKQUERY操作。我真的应该添加一个zoneID和CKReferences。我仍然找不到在这个表上设置CKReference的方法。tempCloudID=13886D9B-8389-4253-981D-51DCD573BA05,应为所有者。如何设置Images表以引用该ID?我使用CKQueryOperation修复了以前的错误。现在,我在下一个屏幕上尝试打开图像时出现了一个错误。我使用的是let predicate=NSPredicate(格式:“recordID=%@”,myRecordID)。myRecordID=3F1CF4EC-95F4-4659-AA47-B00048B3BBAE。错误是:字段“\uuuRecordId”的值类型为引用,无法使用筛选器值类型字符串进行查询。您应该使用CKReference而不是字符串进行查询。请参阅更新的awnserI,我正在尝试使用引用将数据保存到另一个表中。我在let query=行中从上面的代码中得到错误。错误是:使用未解析的标识符referenceField。referenceRecordName设置为“owner table”,是一个字符串,记录类型已更改为my table。我不认为我必须对“owner”表做任何事情?我现在只有2个表,我现在没有使用CKReference设置它们,我正在将第二个表中的“CloudID”设置为第一个表中的ID。我查看了CKReference,但不了解使其工作的文档,也找不到好的示例。我不想在不使用正确的CKReference的情况下添加另一个表,因为我必须跟踪另一个“ID”。下一步是获取图像,现在我只需要图像列表供他们选择。我将尝试CKQUERY操作。我真的应该添加一个zoneID和CKReferences。我仍然找不到在这个表上设置CKReference的方法。tempCloudID=13886D9B-8389-4253-981D-51DCD573BA05,应为所有者。如何设置Images表以引用该ID?我使用CKQueryOperation修复了以前的错误。现在,我在下一个屏幕上尝试打开图像时出现了一个错误。我使用的是let predicate=NSPredicate(格式:“recordID=%@”,myRecordID)。myRecordID=3F1CF4EC-95F4-4659-AA47-B00048B3BBAE。错误是:字段“\uuuRecordId”的值类型为引用,无法使用筛选器值类型字符串进行查询。您应该使用CKReference而不是字符串进行查询。请参阅更新的awnserI,我正在尝试使用引用将数据保存到另一个表中。我在let query=行中从上面的代码中得到错误。错误是:使用未解析的标识符referenceField。referenceRecordName设置为“owner table”,是一个字符串,记录类型已更改为my table。我想我不必对“主人”的桌子做任何事?