2014-12-18 3 views
0

У меня есть tableView с сообщениями. Сообщения хранятся на parse.com.странная ошибка с tableView reload data

загрузить асинхронно, поместить сообщение в массиве структура сообщения

import UIKit 


var messMgr : messageObjet = messageObjet() 
var date : NSDate = NSDate() 

struct message { 
     var commentText = "" 

     var commentDate = "" 


    } 

class messageObjet: NSObject { 

    var messageData = [message]() 


func addMessage(comment : String, date : String) { 
    //messageData.append(message(commentText: comment, commentDate: date)) 

    var mess = message(commentText: comment, commentDate: date) 

    messageData.insert(mess, atIndex: 0) 
    } 


} 

и заполнить мой Tableview

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell:CommentTableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as CommentTableViewCell 


    cell.tag = indexPath.row 

    // Configure the cell... 


    // check if it is in the cache 


    println("the messageCache in cellForRow in commentTableViewController is \(self.commentCache.objectForKey(indexPath.row))") 




    if let messageCached: AnyObject = self.commentCache.objectForKey(indexPath.row){ 

     cell.messageLabel.text = messageCached as? String 

    } 

    if let dateCached: AnyObject = self.dateCache.objectForKey(indexPath.row){ 

     cell.dateLabel.text = dateCached as? String 

    } 


    else if messMgr.messageData.count != 0 { 

     if cell.tag == indexPath.row { 

     cell.messageLabel.text = messMgr.messageData[indexPath.row].commentText 
     self.commentCache.setObject(cell.messageLabel.text!, forKey: indexPath.row) 


     cell.dateLabel.text = messMgr.messageData[indexPath.row].commentDate 
     self.dateCache.setObject(cell.dateLabel.text!, forKey: indexPath.row) 
     } 


    } 


    return cell 
} 

У меня есть модальное ViewController, чтобы добавить новое сообщение.

Для того, чтобы немедленно отобразить сообщение после закрытия модального VC я сделал это

@IBAction func sendComment(sender: AnyObject) { 

    let uuid = userDefaults.stringForKey("ApplicationUniqueIdentifier") 

    var comment = PFObject(className:"Comment") 

    comment.setObject(textToSend.text, forKey: "CommentText") 
    comment.setObject(post, forKey: "Post") 
    comment.setObject(uuid, forKey: "from") 

    comment.saveEventually() 

    let date = NSDate() 



    newMessage.commentText = textToSend.text as String 
    newMessage.commentDate = date.relativeTimeToString() as String 

    messMgr.messageData.insert(newMessage, atIndex: 0) 

    // messMgr.addMessage(textToSend.text as String, date: date.relativeTimeToString() as String) 

    NSNotificationCenter.defaultCenter().postNotificationName("reloadMessageTableView", object: nil) 

    println(messMgr.messageData) 




    self.dismissViewControllerAnimated(true, completion: nil) 

} 

Проблема заключается в том, когда я вернусь к моей Tableview сообщение добавляется в индекс 0 всегда отображается как предыдущий сообщение, и когда я печатаю свой массив сообщений, сообщение об индексе 0 является хорошим.

Любая идея?

ответ

0

Хорошо, проблема в том, что я хранил сообщение в NSCache с индексом в качестве ключа ... Убрано это и все работает хорошо.

Смежные вопросы