我使用CloudKit Dashboard创建了一条记录,因此不会以编程方式创建记录。在“默认区域,模型数据”下(抱歉,我需要至少10个声明来发布图片..:/)所以这是发短信版本。
“EventRef0 975f5715-3ccd-4c5f ... DeleteSelf参考”
所以我在我创建的记录中有3个像这样的参考字段。 现在位于“默认区域,活动”下。其中一条记录有以下标题。
ID:975f5715-3ccd-4c5f ...
创建时间:2015年1月20日19:00创建者:_ac6625 ...修改:修改者:
我的问题如下:
1)我将什么放在EventRef0的“参考”字段中?我目前拥有的事件ID,还是其他什么?
2)这是创建多个引用的正确方法,即通过为我想引用的3个事件创建3个引用吗?
3)当我想获取事件时,是否可以在一次调用数组中获取所有CKReferences,然后获取索引该数组的事件数据,或者我是否必须单独调用以获取每个事件?我希望有一种方法可以通过键入“Reference”属性来获取数组中的所有引用。不确定这是否可行。请最好是斯威夫特。
非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
如果你有数据' recordType什么将引用多个'事件'记录类型对象,然后你应该在'事件'中添加一个CKReference。记录类型,其中CKReference指向数据'宾语。因此,数据对象不需要对事件'宾语。您可以通过查询CKReference字段获取所有事件对象,以获取“数据”的ID。对象
只需查询您的活动' recordType,带有这样的谓词:
CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:dataID action:CKReferenceActionNone];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"dataID == %@", recordToMatch];
答案 1 :(得分:0)
充满活力,
-1 /理想情况下,您应该一次只询问一个问题,而不是编译列表,我认为这样可以更容易回答并为其他人找到答案。
0 /你需要先看看这个主题的一些教程,然后才能在这里发帖,你会很容易找到这样一个问题的答案。这个网站发布了很棒的教程。
http://www.appcoda.com/cloudkit-introduction-tutorial/
但是为了让你离开,从我开始;我会完成的。
1 /引用字段需要包含一个记录UUID,所以这是一个长十六进制数,看起来像这样......
[![enter image description here][1]][1]
2 /您希望将相同的引用放入要组合在一起的记录中,因此您需要一个记录ID /引用来搜索您将用于在一次调用中查找所有三条记录的记录。 / p>
3 /我认为我不太了解您的数据库组织,但是您需要使用复合谓词来观察它们。看到这个问题。CloudKit compound query (query with OR)
此代码创建匹配键的记录,然后执行操作以查找与所述键匹配的所有记录。
func read4Cloud(theLink: String, theCount: Int) {
var starCount:Int = 0
let container = CKContainer(identifier: "iCloud.blah")
let publicDB = container.publicCloudDatabase
let privateDB = container.privateCloudDatabase
let records2Match = CKRecordID(recordName: theLink)
let recordToMatch = CKReference(recordID: records2Match, action: .None)
let predicate = NSPredicate(format:"theLink == %@", recordToMatch)
let query = CKQuery(recordType: "Blah", predicate: predicate)
readerOperation = CKQueryOperation(query: query)
readerOperation.recordFetchedBlock = { (record) in
// Save your record into your array
// blahArray.append(record["blah"])
starCount += 1
}
readerOperation.queryCompletionBlock = {(cursor, error) in
print("query4Cloud \(theLink) \(theCount) \(starCount)" )
if error != nil {
print("ting, busted")
} else {
print("records found \(starCount)")
}
}
readerOperation.qualityOfService = .Background
publicDB.addOperation(readerOperation)
}