我在cloudkit数据库中有一张可选的图片(检查了数据库,测试时添加的图片都在那里)。我创建了一个类来将记录字段初始化为变量,然后在我的表格视图中使用这些变量。我也有一个自定义单元格。但是这张图片不会显示在我的自定义表格视图单元格中。我不知道在表格视图图片中是否有可选图片是否会造成问题,或者是否存在云套件中的代码/设置问题。
非常感谢任何帮助,因为我已经卡了一个多星期了,在网上几乎找不到任何关于这个问题的信息。
以下是我的类代码:
非常感谢任何帮助,因为我已经卡了一个多星期了,在网上几乎找不到任何关于这个问题的信息。
以下是我的类代码:
var feedResults = [UserPosts]()
class UserPosts {
var record: CKRecord
var description: String
var username: String
//var image: CKAsset? // tried also initializing the CKAsset separately
var postPic: UIImage?
init(record: CKRecord) {
self.record = record
self.description = record.objectForKey("description") as String
self.username = record.objectForKey("username") as String
// self.image = record.objectForKey("postPic") as? CKAsset
if var pic = record.objectForKey("postPic") as CKAsset! {
self.postPic = UIImage(contentsOfFile: pic.fileURL.path!)
// below is the other way I've seen it done.
// var url = pic.fileURL!
// var imageData = NSData(contentsOfFile: url.path!)
// self.postPic = UIImage(data: imageData!)
}
}
}
这是我的tableview代码:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as TableViewCell
let record = feedResults[indexPath.row]
cell.postDescription.text = record.description
cell.userName.text = record.username
if record.postPic != nil {
cell.postPic.image = record.postPic!
}
return cell
}
我看到了一些将CKAsset转换成UIImage的方法。第一种方式是我在苹果的CloudKitAtlas项目中看到的方式。虽然我不太精通Obj-C,但我认为我已经正确理解了 - CloudKitAtlas示例
我还看到过使用NSData(contentOFFile:)和UIImage(data:)来完成此操作,如此处所示:SO CKAsset示例
self.image = record.objectForKey("postPic") as CKAsset! if image != nil { var data = NSData(contentsOfURL: image!.fileURL) if data != nil { self.postPic = UIImage(data: data!)! } }`
- Renee Olson