0

問題:

xmlファイル(RSSフィード)から開発中のフィードリーダーにいくつかの情報を解析しています。Safari[[UIApplication sharedApplication] openURL:url]でニュースURLを開こうとすると、機能しません。

xmlファイル自体が十分に準備されていないのではないかと思います。実際、私はこれに打たれ、道を見つけることができません。

詳細:

プロジェクトは、テストされたすべてのフィードで正常に機能し、特定のフィードのみが機能しません。具体的には、解析すると次のようなURLが返されます。%0Ahttp://google.com%0A

これが私が読み込もうとしているXMLファイルです。

RayWenderlichのRSSリーダーチュートリアルをワークベンチとして使用しています

これは私が使用しているコードです:

NSURL *url = [NSURL URLWithString:[entry.articleUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
if (![[UIApplication sharedApplication] openURL:url])
    NSLog(@"%@%@",@"Failed to open url:",[url description]);

これを取得する:2013-03-22 12:25:57.918 myApp[426:c07] Failed to open url:%0Ahttp://google.it/index.html%0A

注意:このプロジェクトをテストしたすべてのフィード(たとえば20以上)は問題を引き起こしませんでした。どんな助けでも、健康で豊かな生活のための私の個人的な祝福があります。

4

1 に答える 1

2

これはXML解析とは何の関係もありません。これは、正しいURLに関するものです。

[NSURL URLWithString:[entry.articleUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; これは非常に、非常に間違っています。

URL全体をエスケープしないでください。クエリパラメータのみをエスケープする必要があります。最初と最後の%0Aは、改行をエンコードすることによって発生します。

この場合、それらはすでにエスケープされているはずなので、空白をトリミングするだけです。

NSString* urlString = [entry articleUrl];
NSString* trimmedUrlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *url = [NSURL URLWithString:trimmedUrlString];
于 2013-03-22T12:08:44.140 に答える