*

Xcode&Objective-Cの文字列処理をユニットテスト(XCTestフレームワーク)で確認する。[NSStringを数値に変換する方法]


スポンサードリンク



「Xcode&Objective-Cの文字列処理をユニットテスト(XCTestフレームワーク)で確認する。」シリーズの第三回目となります。
今回は、文字列を数値に変換する方法を取り扱います。

利用する「ユニットテスト」はXCTestテストフレームワークとなります。
利用しているXcodeはXcode5(5.1.1)となります。

ユニットテストに関しては
「Xcode5でUnitTestを利用してみる。」をまずはご覧いただければ幸いです。

本エントリは以下の内容となります。

1 NSStringを数値に変換する方法

NSStringを数値に変換

intに変換

まずは、一番よく利用するNSStringのintValueからいってみます。
始めなので、テストクラスのファイルの全てを記載いたしますが、今後は対象のテストメソッドのみを記載いたします。

テストを実行すると成功しました。まあこれは特筆すべき点はないですね。

intに変換できない時

数値ではない文字列も当然ありますよね、そんな文字列に対してintValueを呼び出すとどうなるか確認してみます。
Javaだと例外が飛んでくるので、同じようにテストを実装してみました。

あえなく失敗しました。
スクリーンショット 2014-07-01 15.12.26

例外は飛ばないようです。ってことは特定の値に変換されるんだろうと思い、期待値を0にしてテストを実装しました。

やはりそうですか、テストが成功しました。

Integerに変換

次はNSStringのintegerValueの確認です。

問題なくテストは成功しました。

期待値用にわざわざNSIngegerを生成していますが、intのリテラルでも問題ないです。
XCTAssertEqualは値型を比較するテストメソッドです。stringObj.integerValueの結果のNSIntegerはクラスですが、比較前に自動的に値に変換されるってことですね。

やはり777とstringObj.integerValueでも一致しますね。

doubleに変換

次は浮動小数のdoubleを試してみます。

うん、うん予想通りですね、テストは成功しました。

doubleに変換できない時

doubleに変換できない文字列に対してdoubleValueを呼び出してみます。
intValueで変換できないときは0が返却されたので、おそらく0.0が返却されると予想されます。

やはりそうでした。テスト成功!

NSStringをboolに変換

数値ではないですが、文字列をboolに変換してみます。
“y”, “Y”, “t”, “T”,”yes”, “YES”, “true”, “TRUE”(yesとtrueは大文字小文字の組み合わせは何でもOK)
と0以外の整数を文字列にしてNSStringのboolValueを呼び出すとBOOL値のYESに変換されます。

“0”, “n”, “N”, “f”, “F”, “no”, “NO”, “false”, “FALSE”, “多分なんでもOK”
のboolValueを呼び出すとBOOL値のNOに変換されます。どうやら整数以外はどんな文字列でもNOになるようです。

2 フォーマット済みの数値の文字列を数値に変換する方法

カンマ区切りのようなフォーマットされたNSStringを数値に変換

まずはよくあるカンマ区切りの文字列を数値に変換してみます。
NSNumberFormatterでフォーマットの形式を指定したあと、
NSNumberFormatterのnumberFromStringメソッドにカンマ区切りの文字列(数値)を渡すと
NSNumberが返却されるので、あとはNSNumberからintを取り出すだけです。

ちょっとNSNumberFormatterのセットアップが長いですが、テストは成功しました。
これ以外のフォーマットはあまりないとは思いますが、
setGroupingSeparatorでセパレータ
setGroupingSizeで区切りの単位数
がそれぞれ設定可能となっています。

進数表現のNSStringを数値に変換

16進数の文字列を10進数の数値に変換

NSScannerを利用します。NSScanner scannerWithString:に16進数の文字列を指定して呼び出すと
NSScannerのポインターが返却されるので、あとはscanHexInt:に数値格納先のunsigned intの
ポインタ(アドレス)を渡してあげればそのアドレスに格納されているunsigned intに10進数の値がセットされます。

「Xcode&Objective-Cの文字列処理をユニットテスト(XCTestフレームワーク)で確認する。[NSStringを数値に変換する方法]」は以上です。


スポンサードリンク

Googleアドセンス

Googleアドセンス




関連記事

Xcode5の「Auto Layout」機能の使い方[簡単な画面レイアウトを構成してみる。]

「基礎知識と制約(Align:アライメント)の設定方法」 で「Auto Layout」機能の利

記事を読む

Xcode5のプロジェクトへのファイルやフォルダの追加方法

Xcodeでアプリ開発を行う時に、イメージ(画像)の表示は必須な処理であると言えます。 本エントリ

記事を読む

Xcode5を軽快に利用するためのショートカット[基本編]

「Xcode5のエディタエリアの説明 」 「Xcode5のエディタエリアの説明 [中編]」 「X

記事を読む

Xcode5のEmpty Application templateでStoryboardを利用する。

Xcode5のEmpty Application templateでStoryboardを利用する方

記事を読む

Xcode5の「Auto Layout 」機能の使い方[基礎知識と制約(Align)の設定方法]

Xcode4から導入された「Auto Layout」ですが、使いこなせるようになるのは骨が折れます。

記事を読む

Xcode5でInterface Builderの接続状態の確認と切断を行う。

「Xcode5で画面コンポーネントを利用するための基本」で本来説明すべき内容でしたが あちらのエン

記事を読む

Xcode&Objective-Cのまとめエントリー

エントリーもまずまず揃ってきたので、まとめのエントリーを作成しておこうと思います。 基本的には、各

記事を読む

Xcode5でイメージ(画像)を表示&操作する[前編]

Xcodeでアプリ開発を行う時に、イメージ(画像)の表示は必須な処理であると言えます。 前回のエン

記事を読む

Xcodeの使い方[エディタエリアのテキストエディタ]

「Xcodeの使い方」に引き続き「 Xcode5のエディタエリアの使い方[テキストエディタの使い方]

記事を読む

Xcode5で画面コンポーネント(UIコンポーネント)配置して利用するための基本

iOSアプリケーションは当然ですが、画面がありますよね。 言わずもがなですが、iOS向けのアプ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

個人では初となるiOSアプリをリリースいたしました。 何度もリジ

no image
Ruby on rails4系でBootstrapを利用するためのtips

MacでRuby on rails4系のBootstrapを利用しよう

no image
Java、Eclipse、JUnit関連のエントリーの移行のお知らせ

Java、Eclipse、JUnit関連のエントリーは http:/

iOS8開発者向けお勧め本紹介[詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応]

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第二回「関数(メソッド)とクロージャーの利用方法」

前回はSwiftの概要をザックリと説明させていただきました。 今

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑