【问题标题】:PFUser to custom modelPFUser 到自定义模型
【发布时间】:2015-10-21 23:02:57
【问题描述】:

我有一个从 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 类型转换?我有点困惑,任何澄清将不胜感激!

编辑

@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)

}

【问题讨论】:

  • 可能你没有正确地投射它。我可以看到你投射的代码吗?
  • 已添加!我以为我会这样做?我弄错了吗?
  • 如果我同时打印出 TradeUser.currentUser() 和 trader(没有强制转换),它们都会作为 PFUser 返回,所以我不明白我错过了什么。
  • 你正在强迫一个不可能的沮丧。您不能将超类 PFUser 的实例向下转换为派生的 TradeUser。
  • 啊,好吧。那么你对我能做什么有什么建议吗?我尝试将它作为指针,但也没有用。

标签: swift parse-platform casting pfuser


【解决方案1】:

你在强迫自己沮丧,这是不可能的。您不能将基类 PFUser 的实例向下转换为派生的 TradeUser。

【讨论】:

  • PFObject 是不是也一样?
  • 是的。您的基类就像“汽车”,而派生类就像“宝马”。每辆宝马都是汽车,但每辆汽车都不是宝马。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多