我正在使用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.facebookId
或self.facebookId
或self[@"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
中定义)确实被召唤了。
我对此感到困惑。有什么想法或提示吗?
答案 0 :(得分:1)
所以我睡着了,发现了问题,这对我来说是一个愚蠢的疏忽。
基本上在这种情况下,我没有直接访问用户对象。相反,它是我与另一个对象的指针关联。所以问题是我没有打电话:
[query includeKey:@"user"];
查询其他对象时,实际上并未包含完整对象。这是偷偷摸摸的,因为那里有一个实际的对象,它的方法被调用,但它的动态属性没有实现(从我能说的)。
希望将来可以帮助其他人。