どーしよー。

エピソード1 どーしよーの旅立ち

NSDataをエンコードして確認する方法

NSDataをそのままログに出力しても何がなんだか分からない!

なので、エンコードしてログに出す方法を調べました。
方法は簡単。この1行だけ。

NSLog(@"data = %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

ちゃんとエンコードされたのがログに出た!!
他にも下記のエンコードが使えます。

/* Note that in addition to the values explicitly listed below, NSStringEncoding supports encodings provided by CFString.
See CFStringEncodingExt.h for a list of these encodings.
See CFString.h for functions which convert between NSStringEncoding and CFStringEncoding.
*/
enum {
    NSASCIIStringEncoding = 1,		/* 0..127 only */
    NSNEXTSTEPStringEncoding = 2,
    NSJapaneseEUCStringEncoding = 3,
    NSUTF8StringEncoding = 4,
    NSISOLatin1StringEncoding = 5,
    NSSymbolStringEncoding = 6,
    NSNonLossyASCIIStringEncoding = 7,
    NSShiftJISStringEncoding = 8,          /* kCFStringEncodingDOSJapanese */
    NSISOLatin2StringEncoding = 9,
    NSUnicodeStringEncoding = 10,
    NSWindowsCP1251StringEncoding = 11,    /* Cyrillic; same as AdobeStandardCyrillic */
    NSWindowsCP1252StringEncoding = 12,    /* WinLatin1 */
    NSWindowsCP1253StringEncoding = 13,    /* Greek */
    NSWindowsCP1254StringEncoding = 14,    /* Turkish */
    NSWindowsCP1250StringEncoding = 15,    /* WinLatin2 */
    NSISO2022JPStringEncoding = 21,        /* ISO 2022 Japanese encoding for e-mail */
    NSMacOSRomanStringEncoding = 30,

    NSUTF16StringEncoding = NSUnicodeStringEncoding,      /* An alias for NSUnicodeStringEncoding */

    NSUTF16BigEndianStringEncoding = 0x90000100,          /* NSUTF16StringEncoding encoding with explicit endianness specified */
    NSUTF16LittleEndianStringEncoding = 0x94000100,       /* NSUTF16StringEncoding encoding with explicit endianness specified */

    NSUTF32StringEncoding = 0x8c000100,                   
    NSUTF32BigEndianStringEncoding = 0x98000100,          /* NSUTF32StringEncoding encoding with explicit endianness specified */
    NSUTF32LittleEndianStringEncoding = 0x9c000100        /* NSUTF32StringEncoding encoding with explicit endianness specified */
};
typedef NSUInteger NSStringEncoding;

どーしよー。

UIWebViewからHTMLを取得する方法

UIWebViewでロードしたページのHTMLを取得するには、

UIWebViewDelegateメソッド

- (void)webViewDidFinishLoad:(UIWebView *)webView;

で、下記の処理を実装します。

  • HTML全体を取得する方法
NSString* html = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].outerHTML"];
NSLog(@"html = %@", html);
  • HTMLのHeaderを取得する方法
NSString* head = [webView stringByEvaluatingJavaScriptFromString:@"document.head.innerHTML"];
NSLog(@"head = %@", head);
  • HTMLのBodyを取得する方法
NSString* body = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
NSLog(@"body = %@", body);

初めてプログラマみたいなことを書きました。

どーしよー。