1

私はParse.comを使用しており、 というPFUserサブクラスがありNPUserます。

コードは次のとおりです。

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.facebookIdorself[@"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.

PFUser のサブクラス化に関する Parse でこの質問を読みましたが、役立つものは何も見つかりませんでした。また、 PFObject のサブクラス化に関するドキュメントを読み、そこに書かれていることに従いました。

それ以外の場合は、すべての機能が機能します (私のNPUserクラスは適切に呼び出され、そのすべてのプロパティが適切に設定されているようです)。facebookIdParse.com のデータ ダッシュボードを調べると、プロパティも適切に保存されます。

呼び出されたユーザー オブジェクトを調べると、それは ではPFUserなくNPUserprofileImageURLメソッド ( でのみ定義されているNPUser) が呼び出されることがわかります。

私はこれに困惑しています。考えやヒントはありますか?

4

1 に答える 1

1

それで私はそれで寝て問題を見つけました、それは私の側のばかげた見落としでした.

基本的に、この場合、ユーザー オブジェクトに直接アクセスしていませんでした。代わりに、それは私が持っていた別のオブジェクトへのポインターの関連付けでした。だから問題は私が電話していなかったということでした:

[query includeKey:@"user"];

その他のオブジェクトを照会するとき、実際には完全なオブジェクトが含まれていませんでした。そこには実際のオブジェクトがあり、そのメソッドが呼び出されていましたが、動的プロパティが実装されていなかったため、卑劣でした (私が知る限り)。

うまくいけば、これは将来誰かを助けるでしょう。

于 2014-12-27T17:24:47.727 に答える