我正在使用 Parse.com我有一个名为 NPUser
的 PFUser
子类。
代码如下:
NPUser.h
#import <Foundation/Foundation.h>
#import <Parse/Parse.h>
@interface NPUser : PFUser <PFSubclassing>
@property (nonatomic) NSString *facebookId;
- (NSURL *)profileImageURL;
@end
NPUser.m
#import "NPUser.h"
#import <Parse/PFObject+Subclass.h>
@implementation NPUser
@dynamic facebookId;
+ (void)load {
[self registerSubclass];
}
- (NSURL *)profileImageURL {
// -- This is where things blow up --
NSString *urlString = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=large", self.facebookId];
return [NSURL URLWithString:urlString];
}
@end
当我调用 profileImageURL
时,奇怪的事情发生了,似乎执行中止了,但应用程序没有卡住。我在第一行放置了一个断点并将其缩小到 self.facebookId
失败。
当我调用 self.facebookId
或 self[@"facebookId"]
或 [self objectForKey:@"facebookId"]
(哪个我相信都是一样的)我得到这个错误:
error: Execution was interrupted, reason: internal ObjC exception breakpoint(-3)..
The process has been returned to the state before expression evaluation.
我读过 this question on Parse about subclassing PFUser但我在那里找不到任何可以帮助我的东西。我还阅读了 docs on subclassing PFObject并听从那里所说的一切。
问题是所有功能都可以正常工作(我的 NPUser
类似乎被正确调用并且它的所有属性都被正确设置)。当我检查 Parse.com 上的数据仪表板时,facebookId
属性也已正确保存。
我应该提一下,当我检查被调用的用户对象时,它说它是 PFUser
而不是 NPUser
而是 profileImageURL
方法(这是仅在 NPUser
中定义)会被调用。
我对此感到困惑。有什么想法或提示吗?
最佳答案
所以我睡了一觉,发现了问题所在,这是我的一个愚蠢的疏忽。
基本上在这种情况下我没有直接访问用户对象。相反,它是指向我拥有的另一个对象的指针关联。所以问题是我没有打电话:
[query includeKey:@"user"];
当查询其他对象时,它实际上并不包括完整的对象。这是偷偷摸摸的,因为那里有一个实际的对象,它的方法被调用但它的动态属性没有实现(据我所知)。
希望这对将来的其他人有帮助。
关于ios - 尝试访问 PFUser 子类的动态属性时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661627/