2015-10-21 5 views
0

У меня есть модель, я построил для моего PFUser от Parse:PFUser к пользовательской модели

import Foundation 
import Parse 

class TradeUser : PFUser { 

override class func initialize() { 
    self.registerSubclass() 
} 

var userID : String { 
    get {return objectForKey("objectId") as! String} 
    set { setObject(newValue, forKey: "objectId") } 
} 

var emailAddress : String { 
    get {return objectForKey("email") as! String} 
    set { setObject(newValue, forKey: "email") } 
} 

var firstName : String { 
    get {return objectForKey("firstName") as! String} 
    set {setObject(newValue, forKey: "firstName")} 
} 

var lastName : String { 
    get {return objectForKey("lastName") as! String} 
    set {setObject(newValue, forKey: "lastName")} 
} 

var primaryQueue : String { 
    get {return objectForKey("primaryQueue") as! String} 
    set {setObject(newValue, forKey: "primaryQueue")} 
} 

var image : PFFile { 
    get { return self["profileImage"] as! PFFile } 
    set { self["profileImage"] = newValue } 
} 
} 

Но когда я запрос, чтобы получить пользователя и попытаться бросить его в том, что я получаю «Не удалось бросить значение типа «PFUser» (0x107555928) на «ShiftSwap.TradeUser» (0x10754e910) ».

Я думал, что TradeUser будет тем же самым значением, что и PFUser, так как это листинг PFUser? Я немного смущен, и любые разъяснения будут оценены!

EDIT:

@IBAction func chatBarButton(sender: AnyObject) { 

    let postingUser = self.object?.objectForKey("userID") as! String 

    let tradeUserQuery = PFUser.query() 
    tradeUserQuery?.whereKey("objectId", equalTo: postingUser) 
    let trader = tradeUserQuery?.getFirstObject() as! TradeUser 

    var chatVC = MessagesViewController() 

    chatVC.currentUser = TradeUser.currentUser() 
    print(TradeUser.currentUser()) 
    chatVC.otherUser = trader 

    self.navigationController?.pushViewController(chatVC, animated: true) 

} 
+0

Возможно, вы не производите его правильно. Могу ли я увидеть код, в который вы его наложили? –

+0

Добавлено! Я думал, что так я это сделаю? Я ошибаюсь? – trever

+0

Если я распечатаю как TradeUser.currentUser(), так и трейдер (без кастинга), они оба возвращаются как PFUser, поэтому я не понимаю, чего мне не хватает. – trever

ответ

0

Вы принуждать потупив что невозможно. Вы не можете сбрасывать экземпляр базового класса PFUser на производный один TradeUser.

+0

. То же самое для PFObject? – trever

+0

Да. Вы базовый класс - это как «Автомобиль», где вы получили класс, похожий на «BMW». Каждый BMW всегда является автомобилем, но каждый автомобиль не является BMW. –

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