尝试访问PFUser子类的动态属性时出错

时间:2014-12-26 20:25:29

标签: ios objective-c parse-platform pfuser

我正在使用Parse.com,我有一个名为PFUser的{​​{1}}子类。

以下是代码:

NPUser.h

NPUser

NPUser.m

#import <Foundation/Foundation.h>
#import <Parse/Parse.h>

@interface NPUser : PFUser <PFSubclassing>

@property (nonatomic) NSString *facebookId;

- (NSURL *)profileImageURL;

@end

当我调用#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.facebookIdself.facebookIdself[@"facebookId"]时(我认为这些都是一样的)我收到此错误:

[self objectForKey:@"facebookId"]

我已阅读this question on Parse about subclassing PFUser但我没有找到任何可以帮助我的内容。我也阅读了docs on subclassing PFObject,并按照那里所说的那样。

事情是所有功能都起作用(我的error: Execution was interrupted, reason: internal ObjC exception breakpoint(-3).. The process has been returned to the state before expression evaluation. 类似乎被正确调用并且所有属性都被正确设置)。当我检查Parse.com上的数据仪表板时,NPUser属性也会正确保存。

我应该提一下,当我检查被叫用户对象时,它表示它是facebookId而不是PFUser,而是NPUser方法(仅在profileImageURL中定义)确实被召唤了。

我对此感到困惑。有什么想法或提示吗?

1 个答案:

答案 0 :(得分:1)

所以我睡着了,发现了问题,这对我来说是一个愚蠢的疏忽。

基本上在这种情况下,我没有直接访问用户对象。相反,它是我与另一个对象的指针关联。所以问题是我没有打电话:

[query includeKey:@"user"];

查询其他对象时,实际上并未包含完整对象。这是偷偷摸摸的,因为那里有一个实际的对象,它的方法被调用,但它的动态属性没有实现(从我能说的)。

希望将来可以帮助其他人。