我已经找出了如何搜索我的CKrecord,并且只用下面的代码显示一个字段的字符串。CKQuery,如何从记录中获取所有字段?
我有几个问题。(我是新来这个)
我可以搜索,它不区分大小写?
如何搜索记录中的所有字段,然后显示匹配中的所有字段?
我正在制作一个参考应用程序,因此您可以搜索例如BBC1以及与BBC1(即该recordID)相关的所有内容。
Dashboard.jpg showing Record and Fields
import UIKit
import CloudKit
import MobileCoreServices
class ViewController: UIViewController {
@IBOutlet var addressField: UITextField!
@IBOutlet var commentsField: UITextView!
let container = CKContainer.defaultContainer()
var publicDatabase: CKDatabase?
var currentRecord: CKRecord?
override func viewDidLoad() {
publicDatabase = container.publicCloudDatabase
super.viewDidLoad()
}
@IBAction func performQuery(sender: AnyObject) {
let predicate = NSPredicate(format: "serviceName = %@", addressField.text!)
let query = CKQuery(recordType: "SystemFields", predicate: predicate)
publicDatabase?.performQuery(query, inZoneWithID: nil, completionHandler: ({results, error in
if(error != nil) {
dispatch_async(dispatch_get_main_queue()) {
self.notifyUser("Cloud Access Error",
message: error!.localizedDescription)
}
} else {
if results!.count > 0 {
let record = results![0]
self.currentRecord = record
dispatch_async(dispatch_get_main_queue()) {
self.commentsField.text = record.objectForKey("Location") as! String
}
} else { dispatch_async(dispatch_get_main_queue()) {
self.notifyUser("No Match Found",
message: "No record matching the address was found")
}
}
}
}))
}
func notifyUser(title: String, message: String) -> Void
{
let alert = UIAlertController(title: title,
message: message,
preferredStyle: UIAlertControllerStyle.Alert)
let cancelAction = UIAlertAction(title: "OK",
style: .Cancel, handler: nil)
alert.addAction(cancelAction)
self.presentViewController(alert, animated: true,
completion: nil)
}
}
帮助极大。你是如何得到迅捷的例子的?我只能看到Objective C的例子。 – PappaGee
此外,我的搜索变量来自address.Field.text,由用户输入,因此使用您的示例'Bob Smith'。那么我对NSPredicate的语法应该是什么感到困惑(格式:“...... ??? ........”) – PappaGee
我将Objective-C中的例子转换为Swift,因为这是一个快速标记的问题。 (不幸的是,正如您所指出的那样,该参考文档目前只有Objective-C示例。) – breakingobstacles