0

Webサービスからデータを保存していて、一部の情報に‘またはのようなASCII文字が含まれている最初は、UILabelにデコードされて表示される#038; アクセントなどの他の文字があるため、これらのような文字を含むテキストで文字列を設定すると完全に機能すると思いました。\u00f3たとえば、これら2つはそうではありません。

どうしてこれなの?私は正しく理解していますか?

ありがとう。

4

1 に答える 1

3

HTMLエンティティの置き換え

Webサービスからデータを保存しているので、この投稿で説明されているように、HTMLにこのNSStringカテゴリを使用できます。Objective -C:HTMLエンティティを置き換える方法は?

(HTMLエンティティは次のようなものです:‘-ウィキペディアの詳細)

このカテゴリで使用できるメソッドは次のとおりです。

- (NSString *)stringByConvertingHTMLToPlainText;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;



コメントへの回答

[NSAttributedString initWithHTML:documentAttributes:]

指定されたデータオブジェクトに含まれるHTMLから新しいNSAttributedStringオブジェクトを初期化して返します。

NSData* htmlData = [yourHTMLString dataUsingEncoding:NSUTF8StringEncoding]
NSAttributedString* theAttributedString = [[NSAttributedString alloc] initWithHTML:htmlData documentAttributes:NULL];

私はいつもこれを使っています、そしてそれは完璧に働きます。私もそれからマクロを作りました:

#define html2AttributedString(htmlString)                                                                   \
    [[[NSAttributedString alloc] initWithHTML:[(htmlString) dataUsingEncoding:NSUTF8StringEncoding]         \
    documentAttributes:NULL] autorelease]

使用法:

NSAttributedString* attributedString = html2AttributedString(yourNSString);

次に、色、配置、フォントなどのマクロを作成できます…</ p>

iOSの場合は、このページをチェックして、代替品を入手できます。

私たちのinitWithHTMLメソッドは、Macバージョンからの出力と完全に一致することを目的としています。これはキャラクターに対して達成することが可能であり、これが完璧であり続けることを確認するためのユニットテストを実施しています。属性に関しては、同じ外観を実現するためにiOSで少し異なる方法で実行する必要があることがたくさんあります。そこの詳細については気にしません。

于 2013-03-25T21:54:54.610 に答える