アーカイブ

‘iOS’ カテゴリーのアーカイブ

Xcode 9.1でProvisioning Profileを更新する。 このエントリーを含むはてなブックマーク はてなブックマーク - Xcode 9.1でProvisioning Profileを更新する。

2017 年 11 月 17 日 コメントはありません

https://developer.apple.com/ でUDIDを追加したのだけれど、「Automatically manage signing」がONになっている場合に更新する方法が分からなかったのでメモ。

「~/Library/MobileDevice/Provisioning\ Profiles」にあるファイルを消すと、すぐに自動で再作成してくれる。

これで動いたのだけれど、正式な更新方法が分からない、まま。

カテゴリー: iOS タグ:

Auto Layoutの本がよかった。 このエントリーを含むはてなブックマーク はてなブックマーク - Auto Layoutの本がよかった。

2016 年 9 月 25 日 Comments off

なんとなく制約を付けて実際の動きを確認して、なんてことをやっていたのですが、ちゃんと仕組みを理解したくて買ったこの本が分かり易かったのでおすすめです。
買ってしばらく経つのですが、やっぱり必要になった時にしか頭に入らないもんですね。

カテゴリー: iOS タグ:

NSPredicateでの正規表現について。その5(ひとまず完) このエントリーを含むはてなブックマーク はてなブックマーク - NSPredicateでの正規表現について。その5(ひとまず完)

2015 年 8 月 17 日 Comments off

NSPredicateでの正規表現について。その4 » サイキョウライン

要はcodeに半角数字以外が混じっているデータを取り出したいだけなんですが、iOS(CoreData?)的にはどうするのが相応しいのでしょうか。

これ自体については解決方法が分かっていませんが、今回のケースはそもそも数字をしまう時点で半角に寄せてしまえばよい話だったので、煮え切らない思いを抱えつつひとまず完とします。はー。

NSPredicateでの正規表現について。その4 » サイキョウライン
NSPredicateでの正規表現について。その3 » サイキョウライン
NSPredicateでの正規表現について。その2 » サイキョウライン
NSPredicateでの正規表現について。 » サイキョウライン

カテゴリー: iOS タグ:

NSPredicateでの正規表現について。その4 このエントリーを含むはてなブックマーク はてなブックマーク - NSPredicateでの正規表現について。その4

2015 年 8 月 15 日 コメント 4 件

NSPredicateでの正規表現について。その3 » サイキョウライン

ということは、この結果はどういうことなの?どう説明するの?

その2、3の方でコメントをいただいたので、コードを指定して試してみました。(うりかねぐんさんありがとうございます!)
結果は下記の様な感じです。

NSPredicate *p1 = [NSPredicate predicateWithFormat:@"self matches '\\\\u0030'"];
NSLog(@"%@", p1);                            //=> SELF MATCHES "\\u0030"
NSLog(@"%d", [p1 evaluateWithObject:@"0"]);  //=> 1
NSLog(@"%d", [p1 evaluateWithObject:@"0"]); //=> 1
NSLog(@"%d", [p1 evaluateWithObject:@"9"]);  //=> 0
NSLog(@"%d", [p1 evaluateWithObject:@"9"]); //=> 0
NSLog(@"%d", [p1 evaluateWithObject:@"A"]);  //=> 0
NSLog(@"%d", [p1 evaluateWithObject:@"A"]); //=> 0

NSPredicate *p2 = [NSPredicate predicateWithFormat:@"self matches '\\\\u0039'"];
NSLog(@"%@", p2);                            //=> SELF MATCHES "\\u0039"
NSLog(@"%d", [p2 evaluateWithObject:@"0"]);  //=> 0
NSLog(@"%d", [p2 evaluateWithObject:@"0"]); //=> 0
NSLog(@"%d", [p2 evaluateWithObject:@"9"]);  //=> 1
NSLog(@"%d", [p2 evaluateWithObject:@"9"]); //=> 1
NSLog(@"%d", [p2 evaluateWithObject:@"A"]);  //=> 0
NSLog(@"%d", [p2 evaluateWithObject:@"A"]); //=> 0

「\u0030」が「0」にも「0」にもマッチしていたり、「\u0039」が「9」にも「9」にもマッチしています。
参考として0と0、9と9のコードはこちらです。

NSLog(@"\\u%04x", [@"0" characterAtIndex:0]);  //=> \u0030
NSLog(@"\\u%04x", [@"0" characterAtIndex:0]); //=> \uff10
NSLog(@"\\u%04x", [@"9" characterAtIndex:0]);  //=> \u0039
NSLog(@"\\u%04x", [@"9" characterAtIndex:0]); //=> \uff19

サンプルなのでselfとしていたのですが、実際は下記の様に使おうとしていまして、NSPredicateを使わない選択肢がない状態です。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"code matches '.*[^\\\\u0030-\\\\u0039]+?.*"];
NSArray *hoges = [Hoge MR_findAllSortedBy:@"name" ascending:YES withPredicate:predicate];

要はcodeに半角数字以外が混じっているデータを取り出したいだけなんですが、iOS(CoreData?)的にはどうするのが相応しいのでしょうか。

カテゴリー: iOS タグ:

NSPredicateでの正規表現について。その3 このエントリーを含むはてなブックマーク はてなブックマーク - NSPredicateでの正規表現について。その3

2015 年 8 月 14 日 コメント 2 件

NSPredicateでの正規表現について。その2 » サイキョウライン

え?なんなの?¥dと¥Dは全角半角関係ないの?どこ仕様?それどこ仕様よ?

ってことで、念のため仕様を追ってみました。

Predicate Format String Syntax

MATCHES
The left hand expression equals the right hand expression using a regex-style comparison according to ICU v3 (for more details see the ICU User Guide for Regular Expressions).

ここの「Regular Expressions」に付いてるリンクから、

Regular Expressions – ICU User Guide

\d  ✓ ✓  Match any character with the Unicode General Category of Nd (Number, Decimal Digit.)

Regular Expressions – ICU User Guide

\D  ✓ ✓  Match any character that is not a decimal digit.

「Unicode General Category of Nd (Number, Decimal Digit.)」ってなに?→ググる。

Unicode Characters in the ‘Number, Decimal Digit’ Category

U+0030 DIGIT ZERO 0

なるほどってことで、それぞれのコードを確認します。

NSLog(@"\\u%04x", [@"0" characterAtIndex:0]);  //=> \u0030
NSLog(@"\\u%04x", [@"0" characterAtIndex:0]); //=> \uff10

んー、たしかに別物ですよねぇ。。。えぇ。。。

Unicode Characters in the ‘Number, Decimal Digit’ Category

U+FF10 FULLWIDTH DIGIT ZERO 0

。。。ん?
これもここにあるっていうことは「\d」の解釈は仕様として正しいってこと?「\d」を使ってるのがダメ?

NSPredicate *p1 = [NSPredicate predicateWithFormat:@"self matches '.*[^0-9]+?.*'"];
NSLog(@"%d", [p1 evaluateWithObject:@"1234567"]);        //=> 0
NSLog(@"%d", [p1 evaluateWithObject:@"1234567"]); //=> 0

NSPredicate *p2 = [NSPredicate predicateWithFormat:@"self matches '.*[^0-9]+?.*'"];
NSLog(@"%d", [p2 evaluateWithObject:@"1234567"]);        //=> 0
NSLog(@"%d", [p2 evaluateWithObject:@"1234567"]); //=> 0

ということは、この結果はどういうことなの?どう説明するの?

えー、だいぶ混乱してまいりました。

カテゴリー: iOS タグ:

NSPredicateでの正規表現について。その2 このエントリーを含むはてなブックマーク はてなブックマーク - NSPredicateでの正規表現について。その2

2015 年 8 月 13 日 コメント 5 件

NSPredicateでの正規表現について。 » サイキョウライン

自分の理解では万策尽きてしまったので、どなたか教えてください。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self matches '.*\\\\D+?.*'"];
NSLog(@"%d", [predicate evaluateWithObject:@"1234567"]);        //=> 0
NSLog(@"%d", [predicate evaluateWithObject:@"#12345"]);         //=> 1
NSLog(@"%d", [predicate evaluateWithObject:@"あいうえお"]);     //=> 1
NSLog(@"%d", [predicate evaluateWithObject:@"1234A56"]);        //=> 1
NSLog(@"%d", [predicate evaluateWithObject:@"1234567"]); //=> 0

某所で指摘していただいて「\\\\D+」→「.*\\\\D+?.*」として解決できそうだったのですが、新たな問題が。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self matches '.*\\\\D+?.*'"];
NSLog(@"%d", [predicate evaluateWithObject:@"1234567"]);        //=> 0
NSLog(@"%d", [predicate evaluateWithObject:@"1234567"]); //=> 0

え?なんなの?¥dと¥Dは全角半角関係ないの?どこ仕様?それどこ仕様よ?

カテゴリー: iOS タグ:

NSPredicateでの正規表現について。 このエントリーを含むはてなブックマーク はてなブックマーク - NSPredicateでの正規表現について。

2015 年 8 月 12 日 Comments off

自分の理解では万策尽きてしまったので、どなたか教えてください。
Rubyで書くとこのようになる判断(1つめのみfalse)をしたいのですが、思い通りの結果にならなくて悩んでます。

reg = /\D+/
reg =~ '1234567'    #=> nil
reg =~ '#12345'     #=> 0
reg =~ 'あいうえお' #=> 0
reg =~ '1234A56'    #=> 4

Objective-Cではこのように書いているのですが、3つめ以外はNOになります。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self matches '\\\\D+'"];
NSLog(@"%d", [predicate evaluateWithObject:@"1234567"]);    //=> 0
NSLog(@"%d", [predicate evaluateWithObject:@"#12345"]);     //=> 0
NSLog(@"%d", [predicate evaluateWithObject:@"あいうえお"]); //=> 1
NSLog(@"%d", [predicate evaluateWithObject:@"1234A56"]);    //=> 0

Rubyで書いたのと同じ結果にするには、どの様に書いたらいいのでしょうか。

カテゴリー: iOS タグ:

iOSで唐突にパスワードを聞かれる件について。 このエントリーを含むはてなブックマーク はてなブックマーク - iOSで唐突にパスワードを聞かれる件について。

2015 年 6 月 16 日 Comments off

iPhoneやiPadをスリープ解除した時にiTunesやiCloudのパスワードを聞かれることがあって、原因が分からず気持ち悪かったのですが、このツイートを見てふと思いました。

アプリの自動ダウンロードをONにしているので、触ってない間にアプリがアップデートされる→アップデートされたアプリが自動で購入情報(iTunes)や設定情報(iCloud)などを更新しようとする→パスワードを求めるポップアップが出る→スリープ解除したときに気が付く。

これ、じゃないですかね?
せめてなにがアカウント認証を求めているのかは出して欲しい、ホント。

カテゴリー: iOS タグ:

UIAlertControllerでAssertion failureが出た。 このエントリーを含むはてなブックマーク はてなブックマーク - UIAlertControllerでAssertion failureが出た。

2015 年 5 月 2 日 Comments off
*** Assertion failure in -[UIAlertController addAction:], /SourceCache/UIKit/UIKit-3347.44/UIAlertController.m:121

UIAlertView→UIAlertControllerをやっていて、こんなのが出てしばらくハマったのでメモ。
結論から言うと、styleがUIAlertActionStyleCancelのactionは2つ以上addしてはいけない。

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"タイトル"
                                                               message:@"メッセージ"
                                                        preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"キャンセル"
                                          style:UIAlertActionStyleCancel
                                        handler:^(UIAlertAction *action) {
                                          // キャンセルなんとか
                                        }]];
[alert addAction:[UIAlertAction actionWithTitle:@"OK"
                                          style:UIAlertActionStyleCancel
                                        handler:^(UIAlertAction *action) {
                                          // OKなんとか
                                        }]];

パッと見で気が付かないよ・・・。
2つめの「UIAlertActionStyleCancel」は「UIAlertActionStyleDefault」か「UIAlertActionStyleDestructive」にしましょう。
アサーションならもうちょっとメッセージに情報が欲しいなぁ。

カテゴリー: iOS タグ:

NSNullとnilは違う。 このエントリーを含むはてなブックマーク はてなブックマーク - NSNullとnilは違う。

2014 年 8 月 10 日 Comments off

知らないとハマっちゃうシリーズ。

NSNullとnilの違い – iPhone充日記

[NSNull null]とnilは別物なので、nilとの比較だけ行っているとエラーが出ます。

あ、このエラー、コンソールで見たヤツだ!

カテゴリー: iOS タグ: