我在使用点表示法访问成员字段时遇到了一个奇怪的问题。示例:
设置模型
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
访问它时,可能是 FriendsModel
的 initialize()
尚未被调用。
要解决此问题,您可以通过调用 FriendsModel.registerSubclass()
,在您调用 Parse 的位置之前,使用 Parse 更早地注册您的
。 FriendsModel
子类。设置应用程序 ID(..)
这就是我自己解决此类问题的方法,希望对您的情况也有帮助。
关于ios - 访问 PFObject 成员时解析 "unrecognized selector sent to instance",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32470086/