PSFeed作成直後にプロパティの値が参照できない
PubSubフレームワークを使ってちょっとしたツールを作成していますが、PSFeedの更新タイミングが今ひとつはっきりしません。以下のようにURLを指定してPSFeedオブジェクトを作成したのですが、
PSClient* appclient = [PSClient applicationClient];
PSFeed* feed = [appclient addFeedWithURL:[NSURL URLWithString:url]];
NSLog(@"title(%@) URL:(%@)",[feed title],[[feed URL] absoluteURL]);
この時点でURL以外の(例えばtitle)プロパティが取得できません。 アプリケーションを再起動すれば該当のプロパティもきちんと値が取得できるのですがPSClient addFeedWithURL:の直後はダメだめみたいです。ドキュメントにあるとおり
PSFeed* feed = [[PSFeed alloc] initWithURL:[NSURL URLWithString:url]];
if (![feed refresh:&err])
{
return;
}
のようなコードにしてたのですが、一方で、PSFeed initWithURL:のドキュメントには、
This method does not cause any network activity. The feed's entries and metadata will not be available until the feed is added to a client (via the addFeedWithURL: method of PSClient) or its update method is called, and the feed has been downloaded and parsed.
とあって、PSFeedを作成しただけじゃエントリやメタ情報は取得できないんだよ、PSClientにaddFeedしなよって書いてある(たぶん)。ちょっと混乱しちゃいます。ここに書いてあるupdateメソッドっていうのも見つからないし...
結局、PubSubエージェントが設定されているインターバルにしたがってリフレッシュをするまでの間はプロパティの値はNULLとなっているように思えます。試しに、addFeedWithURL:の直後にsleep(5)としてみたらちゃんと値が入っていました。これでいいのか?という気がしますがどうでしょうかねぇ。










Comments