iOS

CloudKit: 同期するにはどうするか(2)

さて、同期させるのに具体的な code ですが、こんな感じになりました: + (NSArray *) queryCategory { dispatch_semaphore_t semaphore = dispatch_semaphore_create( 0 ); CKContainer* defaultContainer = [CKContainer defaultContainer]; CKDatabase* p…

CloudKit: All Records を取ってくるのはどうすんだ?

CloudKit を使っていて、master として登録した table から all records をとってくるのはどうするんだ? こんな単純なことがわからない。結論は、こんな感じ・・・ NSString* word = [NSString stringWithFormat:@"nil"]; NSPredicate* predicate = [NSPred…

CloudKit で error: <CKError 0x604000249c60: "Internal Error" (1/4000); "Couldn't send a valid signature">

CloudKit で、master data を cloud に保存しておき、アプリ起動時にダウンロードしようかなと思って試してみる。 うーん、文字列の query の方法がわからない・・・integer の query に切り替えてみたら、error 発生。 <CKError 0x604000249c60: "Internal Error" (1/4000); "Couldn't send a valid signature"> なにこれ? 調べてみたら、iPhone si</ckerror>…

Xcode 9.4.1: com.apple.CoreSimulator.CoreSimulatorService の異常解消。

Xcode の 9.2 辺りまで、Xcode を起動しっぱなしにすると電池をやけに食う現象があり、long life 自慢の Macbook 12 in だったのに、3 時間ぐらいしか持たない始末。 なんでこんなことになるのだろうと、CPU の使用状況を調べてみたら、以下の謎のプロセス発…

タッチしたら・・の書き方。

アプリ作ってて、ある view をタッチしたら・・・というのを検出する話。 いつもは、対象となる uiview の sub class を作って、delegate を通して、あーめんどくセー・・・という流れだったのですが、今日、こんな書き方を知った。 - (void)touchesBegan:(N…

CloudKit を使う: App を登録してからでないと使えないのね。

CloudKit を使おうと思い、Capability > iCloud > CloudKit を On にする。すると、steps にエラーの表示が。こんな感じ。 ! Add the iCloud feture to your App ID. ! Add iCloud Containers to your App ID. ってことで、provisioning profile とかをちゃ…

CoreML を使って画像認識、Objective-C で書くと・・・

CoreML を使って文字の認識をしたくて、色々調べているのですが、Swift の記事ばかりで、Objective-C の例が全然ない。Swift の記述を Objective-C に置き換えればよい話なのですが、Swift を理解していないので辛い・・・。書籍は持っているのですが、なか…

Vision.framework と CoreML

CoreML を使い始める。物体の写真を撮って、何が写っているか分類する。ネットに情報は色々あるけど、自分のやりたいことズバリに答えてくれる情報はない。しかも、Swift の情報ばかりで、Objective-C で書く人は完全にマイノリティ。しょうがないので、試行…

tableView Prototype Cells で tag には 0 以外を指定しないと表示されないのね。

tableView の一覧表示で、表示する項目は Storyboard の Prototype Cells 部分に UILabel を配置し、configureCell method で表示する内容を指定する。 Storyboard で UILabel を配置するとき、tag のデフォルトは 0 なんだけど 0 のままだとうまく表示がさ…

tableView で、セルをタップしても detail に遷移しないぞ?の場合

tableView で、セルをタップしても detail に遷移しない。これ、基本的なことだろ?どういうことだ? prepareForSegue はちゃんと実装しているぞ? 理由は、storyboard で、detail へ segue の繋ぎ方を間違えていた。画面全体から繋いではダメで、xxxCell と…

App Store へのリリース

受託の仕事をしていると、ホント、いろんなことある。 まず、時間的な制約。必ず納期があるものの、想定外のことが起こるので余裕を持っていたつもりでも、いつの間にか時間が足りなくなってしまう。 今回最もハマったのが、お客様の証明書を組み込んで納品…

証明書の付け替え:resign

いやー、はまりましたね。受託開発していて開発時は自分の provisioning profile を使用し、納品時にお客様から受領した provisioning profile を使わなければならないというケース。Xcode でお客様から受領した provisioning profile を指定してみたものの…

UIButton にアニメーションをつけるには・・・

UIButton にアニメーションをつけるにはどうすればよいのか。 色々調べたところ、結局のところ、アニメーションは UIView に対して実行するものなので、UIButton に直接アニメーションは仕込めない。なので、まずは UIView を作ってその中に UIButton を配置…

animateWithDuration:delay:options:animations:completion で、completion の重要性

UIImageView をアニメーションさせる方法がわからなくて、さて、どうしたものか。色々調べたところ、アニメーションは UIView に対して指示するものであり、UIImageView に対して指示するものではないことが判明。しょうがないので、まずはUIView を定義して…

co-working space

今日はこどもの日ですが、妻が子供の服を買いに行くというので任せることにして、co-working space でアプリを作ることに。 いつもの如くなかなか出発しない。なんか考え込んでいる様子で、行動するのに時間がかかる。ようやく出発したのが 16 時過ぎ。行き…

統制と自治:オブジェクト指向

iOS のアプリを Objective-C で作っています。オブジェクト指向の言語なので、delegate とか、仕組みが提供されているものなので、知っていればればその恩恵を受けられます。今回は、自作した機能でオブジェクト指向の恩恵を受けることができた典型的な事例…

segue を使わないで画面遷移と、画面遷移するときに引数を渡す

アプリを作ってて、ある object をタッチしたら画面遷移したいときがあります。 普通に segue を使えばよいと思ったのですが、例えば object が UIImageView で、月〜日と書かれた絵だった場合、月〜日の object それぞれから segue を引っ張る必要が生じ、…

SpriteKit か、UIViewController か・・・

iOS のアプリを作るとき、ゲームじゃないんだけどちょっとゲームっぽい画面を作らなくちゃいけなくて、さて、SpriteKit を使うべきか、あるいは、普通に UIViewController で済ませてしまうか、悩ましいときがあります。自身の中でも、どう区別すべきか、都…

UINavigationController と UITabBarController

UINavigationController と UITabBarController を同時に使う方法は以前解決したつもり。開発を進めていると、ボタンを選択し + ボタンを押しても別のデータが追加されてしまう。ボタンを押したら、初回はいいのですが色々画面を切り替えていると問題が起こ…

Tab Bar Item の名称を変更するには・・・

Tab Bar Controller に Tab を追加すると、デフォルトで Item という名称になる。当然のことながら、名称を変更したくなるのですが、果たしてどのようにするのか。 接続先の View の下部に Tab Bar が表示されるので、選択する。 次に、Show the Attributes …

UITabBarController に tab を追加:viewcontrollers の順番を入れ替える方法

UITabBarController にタブを追加ようと、storyboard に UITableView を配置し、segue で接続。いつの間にか、順序を間違えてしまったようで、先に追加していた UITableView が viewcontrollers[1] になってしまった・・・ということに気づかず、画面を新た…

Tab Bar Item に名称を設定するには・・・

地味なところでハマってしまった・・・Tab Bar Item ボタンに名称を設定するにはどうするか。Xcode の Storyboard でボタンをダブルクリックしても反応せず。 正解は、ボタンを選択し、Attribute Inspector > Bar Item > Title 部分で名称を設定する。 分か…

Master-Detail template で Prototype Cells を変更する方法

Master-Detail template を使っていると、Prototype Cells というのが表示されて、あーここにセルの内容を表示するのね、というのはわかるのですが、変更しようとするともう大変。さっぱりやり方がわからない。色々調べたところ、次の通り。 1. Master の Ta…

Master-Detail template で tabBarController を追加する方法 (4)

このネタで 4 回も書くとは思ってもいなかったのですが、より良い方法があったので、後学のため書いておこうと。 Master-Detail template に tabBarController を追加するのにどこに追加するのか?という問題があり、さらに、いい加減に追加しても、error に…

Master-Detail template で tabBarController を追加する方法 (2)

やっぱりハマりました。Master-Detail template で、rootView が splitViewController になり、そこに tabBarController を追加したくてしたくてたまらなかったのですが、オレオレでやってみたら detail に画面遷移した折に navigationBar が表示されない事…

Master-Detail template で tabBarController を追加する方法

久しぶりにはまりました。Master-Detail template はよく出来ていて、手を入れる必要がある個所が分かってくれば凄く便利なんです。 でも、TabBar を追加しようとすると状況が一変してしまう。まず、TabBar の追加の仕方がわからない。さらに、storyboard に…

navigationController の delegate method

Detail から detailDetail に画面遷移し、navigation ボタンで Detail に戻ってくる時 delegate method はないのか? 事の発端は、戻ってきたとき tableView の内容が更新されない事態で困ったなと。 調べてみたらちゃんとあった。Detail に戻ってきた後に呼…

Segue の kind で指定できる内容の違い

Segue 接続して次の画面に遷移する場合ですが、Attributes Inspector を表示すると、kind とというリストがあり、そこで画面をどのように表示するか指定できる。 遷移したら navigation Item が表示されなくなったぞ?と思っていたら、Show あるいは Show Dt…

UISwitch の反転

UISwitch の変更があった場合、値をどうやって設定するか。現在の値は property on で取得できます。mySwitch.on のような形です。現在の値を取得できることから、if 文で分岐するやり方を思いついたのですが、あまりスマートではないなぁと・・・こんな感じ…

Class method と Instance method について

アプリを作っていて、画面ごとに(というか ViewController ごとに)source が分かれるのですが、あ、この method 前の画面でも使ったなぁということがあります。今回遭遇したのは、field に数字を入力したら自動的にカンマをつける、データを保存するときは…