所以当 iOS 中引入 Parse 本地数据存储并迅速使用它添加了一些功能时,我很高兴。在一个地方,我使用
[Spot pin]
仅供参考,现货是PFObject的一个子类。现在,我打开另一个屏幕,我刚刚保留的对象是 PFQuery 结果的一部分,但是我不断收到异常:
[PFObject 名称]:发送到实例0x7fd2716422e0的无法识别的选择器
在这种情况下,看起来 Parse 引用了固定的对象,如其文档所述:
启用后,任何给定的 PFObject 将只有一个实例。 例如,假设您有一个"GameScore"类的实例 对象 ID 为 "xWMyZ4YEGZ",然后你为所有 具有该对象ID的"GameScore"实例。结果将是 内存中已有对象的同一实例。
但与其说是我的子类,不如说它认为它只是一个 PFObject......有什么办法可以处理吗?
我自己想通了。事实证明,您必须在子类上调用 registerSubclass 方法,然后才能使用它的 AppId 和 clientKey 初始化 Parse 并启用 localDataStore。所以代码应该看起来:
[Spot registerSubclass];
[Parse setApplicationId:@"XXX" clientKey:@"XXX"];
[Parse enableLocalDatastore];
...在调用 setApplicationId:clientKey 之前调用 [Parse enableLocalDatastore]:
- (void)application:(UIApplication *)application didFinishLaunchWithOptions:(NSDictionary *)options {
[Parse enableLocalDatastore];
[Parse setApplicationId:@"parseAppId" clientKey:@"parseClientKey"];
}
https://www.parse.com/docs/ios/guide#local-datastore-pinning
和 Spot 子类的 .m 中:
+ (void)load{
[self registerSubclass];
}