CKAsset no se mostrará en la image de vista de tabla

Tengo una image opcional en el DB del cloudkit (DB comprobada y la image está allí en los casos en que la agregué en mis testings). He creado una class que inicializa los campos de logging en variables que uso en mi tableview. También tengo una celda personalizada. Pero la image no se mostrará en mi celda personalizada de vista de tabla. No sé si tener una image opcional en una image de tableview está causando un problema o si hay un problema con mi código / configuration en cloudkit.

Cualquier ayuda es muy apreciada, ya que he estado atrapado por más de una semana y hay poco o nada en línea sobre esto.

Aquí está mi código de class:

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!) } } 

}

Aquí está mi código de vista de tabla:

  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 } 

También he visto un par de maneras de llevar un CKAsset a un UIImage. La primera forma, es cómo vi a Apple hacerlo en su proyecto CloudKitAtlas. Aunque no estoy muy versado en Obj-C, creo que lo seguí correctamente, el ejemplo de CloudKitAtlas

También lo he visto hacer usando NSData (contentOFFile 🙂 y UIImage (datos :), como se muestra en esta publicación aquí: SO CKAsset Example

Intente hacerlo sin los .paths y usando contentsOfURL. Así es como hago esto (dentro de su if para el CKAsset):

  if var data = NSData(contentsOfURL: pic!.fileURL) { self.postPic = UIImage(data: data!)! } 

Y además de eso … Usted hace un dequeueReusableCellWithIdentifier, pero no verifique si devuelve nil. Debería crear una nueva instancia de célula. Si era nula

Puede mostrar la image del CKAsset de esta manera:

  var img = record.valueForKey("Picture") as? CKAsset cell.imageView?.image = UIImage(contentsOfFile: img!.fileURL.path!) 

¡Espero que esto ayude!