【发布时间】:2016-02-25 12:50:24
【问题描述】:
希望有人可以帮助我。我试图在带有原型单元的 UITableview 中显示来自 CloudKit 的数据(privateData),但我的代码确实显示了存储在 CloudKit 中的数据。存储数据没问题。
我的代码是:
var arrayname = [CKRecord]()
var arraydate = [CKRecord]()
let privateDB = CKContainer.defaultContainer().privateCloudDatabase
let cloudContainer = (CKContainer.defaultContainer().addOperation)
func loadData() {
arrayname = [CKRecord]()
let publicData = CKContainer.defaultContainer().publicCloudDatabase
let query = CKQuery(recordType: "Notes", predicate: NSPredicate(format: "TRUEPREDICATE", argumentArray: nil))
query.sortDescriptors = [NSSortDescriptor(key: "name", ascending: false)]
publicData.performQuery(query, inZoneWithID: nil) { (results:[CKRecord]?, error:NSError?) -> Void in
if let arrayName = results {
self.arrayname = arrayName
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.tableView.reloadData()
})
}
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arrayname.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! MainViewCell
if arrayname.count == 0 {
return cell
}
let name = arrayname[indexPath.row]
if let nameContent = name["name"] as? String {
cell.nameLabel?.text = nameContent
}
let date = arrayname[indexPath.row]
if let dateContent = date["date_end"] as? String {
cell.nameLabel?.text = dateContent
}
return cell
}
【问题讨论】:
-
step 出了什么问题?数据下载成功了吗?下载的数据是否成功转换为可用的 Swift 对象?表格是否显示了预期的行数和列数?有没有崩溃?
-
当我在模拟器中运行应用程序时,我的 tableview 中没有显示任何数据。我保存数据没有问题,我可以在我的 CloudKit 仪表板中看到数据。 (我在模拟器设置中通过 iCloud 登录)。没有崩溃
-
我已经检查了我所有的 CloudKit 设置,所以用户可以完全访问这些字段(读、写、查询)
标签: swift uitableview cloudkit