iOS/OS X で正規表現を利用するには NSRegularExpression を利用するのが一般的ですが、簡単な置換であれば NSString クラスだけでも実現できます。 グループ化による後方参照も利用できます。
iOS/OS X で正規表現を利用するには NSRegularExpression を利用するのが一般的ですが、簡単な置換であれば NSString クラスだけでも実現できます。 グループ化による後方参照も利用できます。
色々とめんどくさいので文字列操作のメモ。 正規表現を作る 利用するクラス。 NSRegularExpressionクラス NSTextCheckingResultクラス NSError *error = nil; NSString *str = @"some text"; NSString *pattern = @"[hoge|fuga]"; // パターンから正規表現を生成する NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; // 正規表現を適用して結果を得る NSTextCheckingResult *match = [regexp firstMatchInString:str options:0 range:
Objective-Cのオープンソースライブラリのコードを眺めていると __attribute__ という文に出くわすことがしばしばあります。 これは属性を表すキーワードで、普段そこまで使う機会がないのですが、調べるうちに何かと多人数の開発の時にはご利益がありそうな機能ばかりだと感じたので、まとめておきます。尚、使用環境はXcode5, ARCです。 何ができる? __attribute__はコンパイラディレクティブの一種で、変数、型、関数(Objective-Cではクラスやメソッドも)の属性を決めることができます。コンパイラによる静的チェックや関数の最適化の役に立ちます。 __attribute__の後にはカッコが二重に続き、二重括弧の中でコンマ区切りの属性リストを付与することができます。 __attribute__は変数、型、関数宣言の前後に置かれます。Objective-Cではメソッ
NSAttributedStringを使うと文字列を装飾して描画することができます。 使いたい属性をNSDictionaryに設定して、NSAttributedStringのインスタンスを生成することで属性付きの文字列を使うことができます。 後から属性を追加したり変更する場合は、NSMutableAttributedStringの方を使います。 NSAttributedString UIKit Additions Referenceを見るとiPhoneで使える属性として以下のようなものがあるようです。 NSString *const NSFontAttributeName; // フォント名 NSString *const NSParagraphStyleAttributeName; // 段落の書式 NSString *const NSForegroundColorAttributeNa
今日は、iPhoneアプリを国際化対応(ローカライズ)する方法を記載したいと思います。 YoheiM.NETでもいくつかのアプリをリリースしていますが、国際化対応しているアプリだと、 日本でのダウンロード数より海外のダウンロード数の方がかなり多いです。 アプリをリリースするなら国際化対応もするとダウンロード数も増えるかもしれません☆ 国際化対応(ローカライズ)の方法 iPhoneアプリのローカライズの方法は、いくつか用意されていますが、 ここでは、Localizable.stringsファイルを用いたローカライズの方法を記載します。 Xibファイルのローカライズも可能ですが、レイアウトを各国毎に定義するのは、個人的には嫌なので、 画面のラベル名のローカライズもLocalizable.stringファイルで行っています。 STEP1:ローカライズする文字をNSLocalizedString関
UITableViewについて¶ TableViewにおいていくつか気をつけておくと良いことがあります。 下記を参考に書いています。 iOS開発におけるパターンによるオートマティズム Pro iOS Table Views timd/Pro-iOS-TableViews Cellの表示更新を別のメソッドに分ける¶ tableView:cellForRowAtIndexPath: のdelegateメソッドでそれぞれのUITableViewCellを生成しますが、 このメソッド内で、Cell内容を更新する処理を直接書くのは避けましょう。 - (void)updateCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { // Update Cells } - (UITableViewCell *)tableVie
前回はセルの高さは違えどセルのクラスはSTTweetCellで統一されていて同じクラスでした。しかし場合によっては、セルのクラスが異なるものを1つのTableViewで表示する必要があります。今回はそのケースについて説明します。 サンプル: https://github.com/stack3/STFlexibleCellHeightSample サンプルコードのクラスの説明 STFlexibleCellHeightViewController2 STTweetCell、STImageAndCaptionCellを交互に表示するTableViewを保持する STTweetCell ツイートもどきを表示するセル。詳細はその1を参照。 STTweetRowData セルに表示するツイートのデータ。詳細はその1を参照。 STImageAndCaptionCell 画像とキャプションを下部に表示する
JRNPasteboardMonitor [JRNPasteboardMonitor] monitoring UIPasteboard changes even if your app state is in background. https://t.co/HmJov7VYk6— CocoaPods (@CocoaPods) 2013, 10月 22 ペーストボード監視 ここ最近(といっても半年〜1年前位から)、辞書やURL共有のためのアプリでペーストボードを用いた他アプリとの連携が流行ってきているように思っていました。 というのも iOS では他アプリとの連携が Android などに比べて制限が厳しく、その中で Custome Scheme や Keychain Service などを用いて実装することが一般的です。 そのような環境下のなかで、ペーストボードのコピーイベントを元にした
Cocoa: NSString の 1文字を取得するCocoa: NSString の文字数とバイト数を求めるCocoa: NSString を char 型の配列に変換するCocoa: Unicode 正規化と照合 NSString には Unicode 正規化のためのメソッドが用意されている。「正規合成」(NFC: Normalize Function Composite)、「互換合成」(NFKC: Normalize Function Compativle Composite)、 「正規分解」(NFD: Normalize Function Decomposite)、「互換分解」(NFKD: Normalize Function Compativle Decomposite)の説明は以前の記事で書いたので、テストケースを流用する。 #import <Foundation/Founda
1.3系を使っていたのですが、2.0系にバージョンアップして 色々変わっていたのでよく使うものだけ、備忘録がてらまとめてみました。 Manager 1.3系ではAFHTTPRequestOperationを作成して、GET/POSTの設定等を 行っていましたが、2.0系からはそれを管理してくれるManagerが出来ました。 使い方は超簡単 AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager]; [manager GET:@"http://hoge/sample.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { // 成功時の処理. }]; } failure:^
この記事の追加ネタです。 iOSで自作WebAPIにアクセスする - おかひろの雑記 外出先からスマホやタブレットでサーバーにアクセスしようとしても、3GやLTE回線が繋がらなかったり、 繋がったとしても社内システムに接続する場合はVPN接続が必要だったりと、 情報を見ようとしてもオフラインだから見られないというケースも結構あると思います。 なので、一度アクセスした情報はローカルにキャッシュしておき、オンラインであればサーバーから最新の情報を取得してキャッシュに保存、 オフラインの場合はキャッシュがあればその情報を表示・・・という実装を考えてみました。 サーバーから取得してローカルにキャッシュするデータは、下記2パターンを考えます。 テキストデータ(JSON) ファイル(PDF,JPG,Word,Excel,PowerPointなど。UIWebViewで開く。) JSONデータの場合 ロー
StoryboardでUITableViewCellのPrototypeにUIGestureRecognizerを適用できないObjective-C Storyboardには、UIGestureRecognizerも配置できますが、UITableViewCellのPrototypeにOutletを紐付けるとビルド時にエラーとなります。 error: Illegal Configuration: Gesture recognizers cannot be used on prototype objects. エラー内容によると、ジェスチャはStoryboardのプロトタイプオブジェクトでは使えないようです。 コードで何とかするしかないですが、UITableViewCellは再利用を前提としていて、初めてデキューされたオブジェクトだけにジェスチャを紐付けするように工夫する必要があります。 st
NSString UIKit AdditionsにあるsizeWithFont:は、文字列を指定フォントで表示した時の表示サイズを求めるメソッドとされている。 ところがこれ、横幅は正しいのだが、縦幅は正しくないことがある。 表示幅が取得値(size.height)より大きいことがあるのだ。 どのような場合にそうなるか。 指定フォントが英字フォントで、文字列に日本語を含む場合がそれに当たる。 この場合、英字部分は指定フォントが使われるが、日本語に関しては代替フォントが使われる。 例えば、標準的フォントとしてよく使われるHelveticaは英字フォントであり、実は日本語は含まない。それでも日本語も表示できるのは、この代替機能があるからだ。絵文字もこの機能によって、どのフォントでも表示できるようになっている。 (フォントが実際のところどの文字コードに相当するフォントを持っているかは、FontBo
カテゴリーとクラスエクステンションは、Objective-Cで使えるクラス拡張の方法です。 既存のクラスにメソッドを追加したりクラスの分割をしたりすることができるので、中級以上のObjective-Cユーザーには必須の機能です。 カテゴリーによるメソッド追加 カテゴリーを使うと、既存のクラスにメソッドを追加することができます。 自分でつくったクラスにメソッド追加することもできますし、システムのフレームワークの中のクラスに追加することもできます。 例えば、NSStringクラスに二つの新しいメソッドを付け加えた例を見てみましょう。 まず、追加メソッドのヘッダーファイルはこうなります。 // NSString+ToyshipMode.h @interface NSString (ToyshipMode) + (void)ToyshipMode1; - (void)ToyshipMode2; @
お願い もっと良い方法があるよ!こうすると楽だよ!ここ間違ってるよ!等があればコメントください。やり方を模索中です ある日ソースコードを見てると、こんなソースを見つけました。 -(void)methodA { NSDictionary *userInfo; NSURL *imageUrl; NSString *appid; NSMutableDictionary *param = [NSMutableDictionary dictionary]; [param setObject:userInfo forKey:@"userInfo"]; [param setObject:imageUrl forKey:@"imageUrl"]; [param setObject:appid forKey:@"appid"]; [self methodBWithParam:param]; } -(void
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
ドメインウェブの設定が見つかりません 考えられる原因 ドメインウェブの設定がまだ行われていない。 ドメインウェブの設定がまだ反映されていない。(反映には数時間~24時間かかることがあります) ドメインウェブ・DNSの設定が誤っている。 アカウントが存在しない、契約が終了している、削除されている。
「ちょっとこの Web API 使ってなんかつくってみるか」ということがたまにある(とくにハッカソンで)ので、手早くつくれるように僕なりの手順をまとめてみました。 「共通処理の実装」までは簡単な文字列の置換で済むので、 ファイルテンプレートにしておく とより簡単になりそうです(参考:Xcodeのファイルテンプレートを自作する)。 0. クラスファイルを新規作成 AFHTTPClientのサブクラスとしてクラスファイルを新規作成する。 1. 共通処理の実装 APIキーをセットするメソッドの定義と実装と、オブジェクト初期化用のメソッド実装。 ヘッダファイル(.h) + (void)setAPIKey:(NSString *)APIKey; 実装ファイル(.m) #import "AFJSONRequestOperation.h" #define API_BASE_URL @"http://xx
ObjectiveCの文字列検索はrangeOfStringメソッドを使うことによって実現できますが、ほかの言語と比べてややこしい気がするのでまとめておきます。 基本的なrangeOfStringの使い方 NSString * str = @"abcdefg"; NSRange range = [str rangeOfString:@"cd"]; if (range.location == NSNotFound) { NSLog(@"検索対象が存在しない場合の処理"); } 上のような例を実行すると、strのうち"cd"の範囲がNSRangeという形で返されます。 NSRangeは文字列の最初の文字の位置をrange.location、文字列の長さをrange.lengthとして取得でき、存在しない場合はlocationがNSNotFoundとなります。 上の例だとrange.locati
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く