読者です 読者をやめる 読者になる 読者になる

CloudKit で relation はどうやって定義するのか

CloudKit を使って、1 : N の relation はどうやって表現するのか、とりあえず、設計においてどうするのか、理解を深めるため、主に Apple の document を中心に熟読してみました。 CoreDate との比較になりますが、CloudKit の場合、N : N という CoreData …

CloudKit を使ってみた

アプリのユーザーが作ったデータを共有すると色々都合が良いので、BaaS はどれがいいのか調べていたら、Apple 謹製の CloudKit があった。ちょっと試してみたらかなり素直な印象。Apple の公式ドキュメントが一番使える印象。Objective-C で例示してあるのも…

UITableView を配置すると、上部に謎の空白ができてしまう時の対処方法

いつの頃からか、UITableView を画面上に配置すると、謎の空白ができてしまう現象が発生。これ、見た目がすごく悪いので、解決方法がないのか色々調べたのですね。 結局のところ、StoryBoard で、UITableView の配置順を下げると解消するのですが、これが一…

info.plist と NSUserDefaults

アプリ内のちょっとしたデータを保存するのに、CoreData に保存するほどでもないんだよなーということがあって、具体的には、観察地を入力する時のデフォルト地点を、前回の場所にしておきたかったんですね、毎回場所を変えてバードウオッチングする人は稀で…

CloudKit Storage

アプリ利用者のデータを統合すると集合知的な利用方法ができる。 今構築中の野鳥観察記録(Field Note)では、例えば有名な探鳥地に行くとして、遭遇できるであろう野鳥の種別とその期待値を出したり、日本各地における渡り鳥の初認日から、自宅周辺での初認…

CoreData relations は valueForKey でも指定できる

CoreData で many to many を指定。あるレコードに関連づけられた N のレコード数は一体どうやって取り出すのだ?と疑問が生じました。一覧の画面で、detail に登録した野鳥の数だけ表示したいと思ったんです。 ダメ元で、relations で規定した文字を指定し…

CoreData many to many における、many の検索

CoreData を使い、野鳥観察記録帳のデータを管理。観察記録テーブルと野鳥一覧を many to many で連結。RDB の場合、 (1) 野鳥観察記録ー(N )観察した野鳥ー(1) 野鳥一覧 のように、テーブルを定義しますが、CoreData では many to many という指定ができる…

CoreData relationship, Many-To-Many (N 対 N)について

CoreData を使うと、One-To-Many (1 対 N)や Many-To-Many(N 対 N)を形容できるということで、いろいろ試してみた。 私はもともと RDB を扱っていたので、Many-To-Many の概念がよく分からない。RDB の場合、1 : N : 1 のようにすれば良いわけで、Many-T…

NSPredicate で検索句を作る

バードウオッチングをして、フィールドノートを記録するためのアプリを作成中です。日本で観察できる野鳥名のマスタは日本野鳥の会から取ってこれたので Core Data に入れました。頭一文字を入力したら、候補の野鳥名が一覧で出てくるようにするにはどうする…

AppDelegate を他のクラスで使う

AppDelegate とは何だろう。delegate とどう違うのか。 私も未だ明快にわかっていないのですが、AppDelegate は、Application 全体を通じて共有するようなオブジェクトを定義しておいて、必要に応じて参照・更新するような使い方をするようです。言ってみれ…

CAShapeLayer で描写した図形を消すには?

CAShapeLayer で描写した図形を消そうと、 CAShapeLayer* circleLayer; /* 描写する部分、省略 */ [circleLayer removeFromSuperlayer]; とすると、消えない。 なんで?と思って調べたら、 [circleLayer removeFromSuperlayer]; circleLayer = nil; とすると…

UIView の座標系と SpriteKit の座標系を変換する

SpriteKit の scene の座標系は、原点 (0, 0) が左下です。UIView の座標系は Mac でおなじみの右上になります。なぜこのような違いが出るのかというと、これは想像ですが、SpriteKit は重力の概念があり、0 は ground の方が都合がよく、計算のコストを低く…

KVO の勘所

アプリを作っていると、「ある値が変化したら・・・」ということをしたくなるもので、KVO と呼ばれる仕組みが Objective-C に用意されています。 「あるクラスの値が変化したら知らせてね」ということを登録できます。便利なんですが、覚えておかないといけ…

SpriteKit: すべての子ノードを削除する

SpriteKit で、画面上にスワイプでスクロールさせたかったのですが、解説読んでもさっぱり分かりません。自作されている方もいるようで、幾つかソースも見たのですが、それでもさっぱり分かりません。仕方ないので、左右にスワイプしてページを切り替えるこ…

自作 class の sub class

自作 class の sub class なので、何か性能が悪くなってしまったか?と勘違いしていましたが、循環参照問題によるものと判明し解決できたので、sub class で色々実験。 まず、super class で定義済みの @property は sub class で再度定義する必要なし。当た…

cannot find declaration for class A superclass of class B.

ゲーム作成中です。 SpriteKit 使ってます。 ゲームシーンは SKScene で起こしています。 あるシーンを SKScene の sub class として作りました。class A とします。 次に、class A の sub class を起こしました。class B とします。 build するとエラーにな…

Objective-C は古くさい?

Swift 全盛の今日この頃、Objective-C でプログラム組むのはいかなる理由によるものか?という命題があります。 当方、Swift には今のところあまり関心がない(もとい、学習する意欲がない)のですが、それは何でか自己分析しました。 まず、Objective-C を…

クラスメソッドとは何か。

Objective-C のメソッドを大別するとクラスメソッドとインスタンスメソッドの 2 種類あり、その区別は定義するときに、頭に+ が付いていればクラスメソッド、- が付いていればインスタンスメソッドになります。 ところで、通常プログラムを書くときはインス…

CoreData で Entity を subclass 化すると 4 ファイル作成されるようになった

CoreData で Entity を新設したらファイル一覧で右クリック、New File... します。 その後、テンプレート選択画面になるので、Core Data、NSManagedObject subclass を選択し Next ボタンを押します。 すると、新設した Entity を元にして、.m, .h ファイル…

CoreData でいきなりエラーの対処方法

CoreData アプリを作ろうと、Master-Detail テンプレートで use coredata する。 テンプレートの通り、変更なしで build すると問題なし。 次に、CoreData の entity を追加して build するとエラー・・・ たったこれだけでエラー・・・ 敷居高いね・・・(…

delegate とは何か(5)

具体的に delegate を使うように記述します。 STtouchPointCircle は、丸の class です。 STtouchPointCircle.h #import <UIKit/UIKit.h> @class STtouchPointCircle; @protocol STTouchPointCircleDelegate - (void) beginImageTouched:(NSSet *)touches withEvent:(UIEven</uikit/uikit.h>…

delegate とは何か(4)

ところで、丸をタッチしたら・・・という記述をしたいので、UIViewController.m の touchesBegan に記載を行いましたが、よく考えてみると、丸に関する記述なので、丸の class に記述を行うのが正しい姿なのではないだろうかと思いませんか。 オブジェクト指…

delegate とは何か(3)

ViewController.m だけで記述できるけれども delegate を使ったほうがよいと書きました。 それはなぜでしょう。 理解を促進するために、ViewController.m に記述するとどうなるか試してみます。 - (void) touchesBegan:(NSSet*) touches withEvent:(UIEvent*…

delegate とは何か(2)

delegate は必要性があっての概念なのですが、その必要性が分かっていないとなかなか理解が進みません。 必要性を理解するために、具体的な事例をもとにして整理してみたいと思います。 次のようなアプリを考えます: ・ユーザは画面上の丸を頻繁に動かしま…

App Store のレビューに要する期間がずいぶん短くなった。

先日、BezierCurveAnimation II を無事リリースししました。 Bezier Curve Animation II Satoshi TANAKA Productivity Free AppStore に上市するには Apple の Review があり、その後リリースとなります。 去年ぐらいは review の期間が 1 週間ぐらいかかっ…

UIView で表示順序を変える

UIView で色々object を配置していくとどんどん上に積み重なっていく。 順番を変えたい時にどうするか。 調べたところ、addSubview した後、sendSubviewToBack すればよい。 この method では後ろに配置することができる。 code の例は次の通り。 [self.canv…