ios - 访问 PFObject 成员时解析 "unrecognized selector sent to instance"

标签 ios swift parse-platform pfobject

我在使用点表示法访问成员字段时遇到了一个奇怪的问题。示例:

设置模型

class SettingsModel: PFObject, PFSubclassing {

    override class func initialize() {
        struct Static {
            static var onceToken : dispatch_once_t = 0;
        }
        dispatch_once(&Static.onceToken) {
            self.registerSubclass()
        }
    }

    static func parseClassName() -> String {
        return "Settings"
    }

    @NSManaged var name:String
    @NSManaged var code:String
    @NSManaged var friend:FriendsModel

}

friend 模型

class FriendsModel: PFObject, PFSubclassing {

    override class func initialize() {
        struct Static {
            static var onceToken : dispatch_once_t = 0;
        }
        dispatch_once(&Static.onceToken) {
            self.registerSubclass()
        }
    }

    static func parseClassName() -> String {
        return "Friends"
    }

    @NSManaged var user:PFUser
    @NSManaged var settings:SettingsModel
}

当我尝试使用 mySettings.friend.settings.name 访问好友名称时,我在“设置”上遇到无法识别的选择器。

但有趣的是,当我使用 (mySettings.friend["settings"] as SettingsModel).name 时它起作用了。我有意省略了所有条件解包等。 - 我有正确类型的有效 PFObject 和所有数据......

我确定这是微不足道的事情,但无法弄清楚...任何帮助将不胜感激。使用 Parse 1.8.2。

最佳答案

看起来 FriendsModel 没有成功注册为 Parse 子类,尽管您实现了 PFSubclassing。当您通过 mySettings.friend.settings.name 访问它时,可能是 FriendsModelinitialize() 尚未被调用。

要解决此问题,您可以通过调用 FriendsModel.registerSubclass(),在您调用 Parse 的位置之前,使用 Parse 更早地注册您的 FriendsModel 子类。设置应用程序 ID(..)

这就是我自己解决此类问题的方法,希望对您的情况也有帮助。

关于ios - 访问 PFObject 成员时解析 "unrecognized selector sent to instance",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32470086/

相关文章:

ios - 使用 UIPinchGestureRecognizer 在捏合方向缩放 View

ios - 如何在 PST Collectionview 中突出显示选定的单元格?

ios - 沙盒自动续订订阅能否在应用程序重新安装后继续存在

Android ParseFacebookUtils.login 回调,返回具有空 objectId 的用户

ios - 如果服务器发生变化,请更新我的应用程序中的基本 URL

ios - SKShapeNode 不绘制 UIBezierPath

ios - 我的 swift 代码不会执行振动

arrays - 函数中的闭包数组参数

ios - swift PFQueryTableViewController - 在呈现单元格之前删除重复的对象

javascript - 图像正确显示在弹出框中,但保存时返回未定义的错误。为什么?