2015-09-11 4 views
0

Я использую PFQueryTableViewController, чтобы попытаться загрузить данные в таблицу.Данные из Parse не загружаются в PFQueryTableViewController

EDIT: Ссылка на фотографию называют чуть ниже: http://i61.tinypic.com/x5626a.png

Чтобы мое знание все настроено правильно, но при работе на тренажере, нет изображения или текст не отображается. Запрос загружает правильное количество ячеек: Есть 14 объектов в моем классе «Почта», и симулятор загружает 14 ячеек таблицы, но все они просто отображаются на фотографии выше. В tableview также есть 2 метки (которые я предварительно заполнил в инспекторе атрибутов с текстом), и этот текст также не отображается.

EDIT 2:

Я понял, как отображать текст в ячейке, но я не могу получить, как отобразить изображение. Это мой код в моем cellForRowatIndexPath:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? { 
    //4 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! DataCell 

    let Postobject1 = object as! Post 

    cell.shortDescriptionLabel.text = Postobject1["short_decription"] as? String 
    cell.userUsername.text = Postobject1["user2"] as? String 

    var thumbnail: PFFile = Postobject1["fichierimage"] as! PFFile 
    cell.contentImage.file = thumbnail 




    return cell 

    } 

код работает правильно, чтобы отобразить строки, shortDescriptionLabel и userUserName. Но загрузка изображения не работает. Я взял этот код:

var thumbnail: PFFile = Postobject1["fichierimage"] as! PFFile 
    cell.contentImage.file = thumbnail 

с сайта Разбор здесь: http://i60.tinypic.com/2ziq0hu.png

однако, когда я нажал «быстрым» он сказал, что не скор пример, так что мой перевод кода. Я никогда не программировал в Obj-C, поэтому, возможно, я перевел это неправильно. Может ли кто-нибудь помочь с быстрым переводом, пожалуйста?

+0

отправьте код 'loadObjects()' – iRiziya

+0

debug, когда вы обновляете журнал ячеек и его подпункты se e, что они содержат, затем регистрируйте выходы, чтобы проверить, что они подключены. – Wain

+0

@iRealMe loadObjects() - это (если я не ошибаюсь) встроенный метод для PFQueryTableViewControllers, аналогичный tableView.reloadData() для регулярных UItableviews. – joey

ответ

0

Я, наконец, нашел ответ примерно через 9 часов. Я расскажу все подробности здесь для людей, которые найдут это в будущем. Надеюсь, они не будут бороться, пока я это сделал :)

Целью было загрузить 2 изображения и 2 строки из моего класса «Опубликовать» в «Парсе» и отобразить их в PFTableViewCell. Одно из этих изображений было из реляционных данных, от указателя в классе «Почта».

Вот мой код для моего класса "Сообщение" PFObject:

 import Foundation 
     import Parse 
     import ParseUI 
     import UIKit 

    class Post: PFObject, PFSubclassing { 

@NSManaged var image: PFFile 

@NSManaged var short_decription: String? 




//1 
class func parseClassName() -> String { 
    return "Post" 
} 

//2 
override class func initialize() { 
    var onceToken: dispatch_once_t = 0 
    dispatch_once(&onceToken) { 
     self.registerSubclass() 
    } 
} 

override class func query() -> PFQuery? { 
    let query = PFQuery(className: Post.parseClassName()) 
    query.includeKey("from_user") 
    query.orderByDescending("createdAt") 
    // query.whereKey("early_semester", equalTo: true) 
    return query 
} 

    init(short_decription: String?) { 
    super.init() 








} 

override init() { 
    super.init() 



    } 

} 

Вот код для моего TableCell:

import UIKit 
    import ParseUI 
    import Parse 

    class DataCell: PFTableViewCell { 


@IBOutlet weak var shortDescriptionLabel: UILabel! 

@IBOutlet weak var UserProfilePhoto: PFImageView! 

@IBOutlet weak var contentImage: PFImageView! 
@IBOutlet weak var userUsername: UILabel! 



} 

Вот код для моего PFQueryTableViewController:

 import UIKit 
    import Parse 
    import ParseUI 
    import Foundation 

    class new: PFQueryTableViewController { 

// MARK: - Lifecycle 
override func viewDidLoad() { 
    super.viewDidLoad() 
    loadObjects() 
} 

//1 
override func viewWillAppear(animated: Bool) { 

    loadObjects() 

} 

//2 
override func queryForTable() -> PFQuery { 
    let query = Post.query() 
    return query! 

} 

//3 
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? { 
    //4 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell1", forIndexPath: indexPath) as! DataCell 



    let PostObject = object as! Post 


    // assign label in tablecell text from my "Post" class 
    cell.shortDescriptionLabel.text = PostObject["short_decription"] as? String 
    cell.userUsername.text = PostObject["user2"] as? String 

    // loading image saved in my "Post" class 
    var thumbnail: PFFile = PostObject["fichierimage"] as! PFFile 
    cell.contentImage.file = thumbnail 
    cell.contentImage.loadInBackground() 


    /* loading image that is relational data. My "Post" class has 
    a pointer column "from_user" that points to the "User" class, 
    and this is loading the profile photos from the User class. 
    this is possible because I used "query.includeKey("from_user")" in my query.*/ 

    var profilePhoto: PFFile = PostObject.objectForKey("from_user")!.objectForKey("profilePicture") as! PFFile 
    cell.UserProfilePhoto.file = profilePhoto 
    cell.UserProfilePhoto.loadInBackground() 

    return cell 

} 



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