2015-02-26 4 views
0

я имею эту проблему, независимо от того, что переменная «вар» я положил в пользовательских uitabelviewcell, он возвращает ноль в то время как IBOulets работает просто отличнопользовательские uitabelviewcell переменная возвращает NIL, IBOutlets работает отлично - Mailcore2

tableviewcell.swift

import Foundation 
import UIKit 
class tableViewCell: UITableViewCell { 

@IBOutlet weak var tableViewLabelDate: UILabel! 
@IBOutlet weak var tableViewLabelDisplayName: UILabel! 
@IBOutlet weak var tableViewLabelSubject: UILabel! 
@IBOutlet weak var tableViewTextViewInfo: UITextView! 
var messageRenderingOperation: MCOIMAPMessageRenderingOperation! 

required init(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

} 

tableview.swift

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
var cell2: tableViewCell = tableView.dequeueReusableCellWithIdentifier(reuseTableViewCellIdentifier, forIndexPath: indexPath) as tableViewCell 
      cell2.tag = 0 
      let message: MCOIMAPMessage = mailbox?.messages[indexPath.row] as MCOIMAPMessage! 
      let uidKey = message.uid 
      cell2.tableViewLabelDisplayName?.text = mailbox?.messages[indexPath.row].header.from.displayName 
      cell2.tableViewLabelSubject?.text = mailbox?.messages[indexPath.row].header.subject 
      println("Got the subject line: \(mailbox?.messages[indexPath.row].header.subject)") 

      cell2.messageRenderingOperation = self.imapSession.plainTextBodyRenderingOperationWithMessage(message, folder: "INBOX", stripWhitespace: false) 

      cell2.messageRenderingOperation?.start({ (plaintext: String!, error: NSError!) -> Void in // Crash at this line 
       if error != nil{ 
        println("ERROR at messageRenderingOperation\(error)") 
       }else { 
       cell2.tableViewTextViewInfo.text = plaintext 
       cell2.messageRenderingOperation = nil 
       } 
      }) 

      return cell2 

} 

enter image description here

он выходит из строя на этой линии

cell2.messageRenderingOperation?.start({ (plaintext: String!, error: NSError!) -> Void in // Crash at this line 

UPDATE

Я попробовал этот Aswell

class tableviewController: UITableViewController, UITableViewDataSource, UITableViewDelegate { 
var messageRenderingOperation: MCOIMAPMessageRenderingOperation? 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
self.messageRenderingOperation = imapSession.plainTextBodyRenderingOperationWithMessage(message, folder: "INBOX") 
self.messageRenderingOperation.start({ (plaintext: String!, error: NSError!) -> Void in 
       if error != nil{ 
        println("ERROR at messageRenderingOperation\(error)") 
       }else { 
       cell2.tableViewTextViewInfo.text = plaintext 
        cell2.messageRenderingOperation = nil 
       } 
      }) 
} 

} 

UPDATE 2

теперь, если я использую

var messageRenderingOperation = MCOIMAPMessageRenderingOperation() 

то это не ноль, но все еще падает. Я думаю, что это проблема с «плагином»?

+0

Вы пробовали код в Obj-C? –

+0

Я попытался изо всех сил скопировать код из примера в приложение mailcore2, тот же результат ... я понятия не имею, почему он не будет работать – KennyVB

ответ

0

Поскольку ваш var инициализируется позже, вы должны объявить его необязательным var messageRenderingOperation: MCOIMAPMessageRenderingOperation? и не использовать силу для его развертывания, как вы в настоящее время объявили. Также, если вы используете раскадровку, вы можете инициализировать ее в бодрствовании от метода nib.

class tableViewCell: UITableViewCell { 

    @IBOutlet weak var tableViewLabelDate: UILabel! 
    @IBOutlet weak var tableViewLabelDisplayName: UILabel! 
    @IBOutlet weak var tableViewLabelSubject: UILabel! 
    @IBOutlet weak var tableViewTextViewInfo: UITextView! 
    var messageRenderingOperation: MCOIMAPMessageRenderingOperation? 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

    } 

    override func awakeFromNib() { 
    super.awakeFromNib() 

    self.MCOIMAPMessageRenderingOperation = //some initialization 
    } 
} 
+0

ahh, но он все равно возвращает nil – KennyVB

+0

Можете ли вы попробовать инициализировать свой var внутри UITableViewCell awakeFromNib()? –

+0

erhm, как я могу это сделать? никогда не использовал awakeFromNib() – KennyVB