Objective-C

Core Data でデータを削除する方法が変わったんですね、Xcode 9

Core Data でデータを削除する時のやり方ですが、今までは for 文の中で deleteObject みたいな形で実装していたのですが、persistentContainer を使うようになってから、同じやり方をしてもダメだと、削除されないと、下位互換は無視すると。エラーにもなら…

Master Detail テンプレートの調整

Auto Layout の調整もひと段落して、さて、動作検証でもしましょうかと iPad の simlator を立ち上げたら、iPad では勝手に splitView で表示されるのですね。そういえば、Main.storyboard でも、一番はじめのが UISplitViewController なので、なんか新しく…

App を提出したら却下されたので、新しい build を iTunesConnect に提出

App を提出したら却下。理由は、多様なデバイスに対応する必要があります、ついては、Developer conference の Auto Layout のビデオでも見て習得してください、とのメールが・・・ ビデオ見て学習しましたが、正直サッパリでした。ので、『よくわかる Auto …

stack view の中に tableView を入れると落ちる

Xcode のバグのせいで、Main.storyboard が開けなくなり、已を得ず作り直したことは以前書いた通りです。 その後、落ちる条件がはっきりとわかりました。stack view の中に tableView を入れると、no answer になり、Xcode を強制終了するしかないように・・…

Custom Cell は難しいね。

Custom Cell は難しい。 何が難しいかというと、設定方法がよくわからないのと、method の書き換えがよくわからない。 製作中の code が飛んでしまったので、已む無く作り直しているのですが、今回ハマったのは、custom cell の部分。Table View で一覧表示…

UISearchBar と UITableView

アプリを作っていますが、Xcode のバグ、具体的には Interface builder で、stack view を多用すると帰ってこなくなる現象のせいで storyboard が壊れてしまい 5 回ほど作り直さざるを得ない状況になり、作成済みの source からせっせと移植しています。 苦…

managedObjectContext は何処へ・・・

Xcode 8 辺りから CoreData の扱いが変わり、model を更新しても自動で改訂がかかるため .h をわざわざいじらなくてもよい、便利だねってのは分かっていたのだが、プログラム側にも変更があったのは知らなかった。 具体的には、managedObjectContext は何処…

5 回も作り直すと正直萎えるが、復習になって良い面もある

Xcode 9 のバグのせいで、具体的には InterfaceBuilder で stack view を積み重ねると複雑になってしまい処理がおかしくなって結局 storyboard が開けなくなってしまう現象があり、結局 5 回目の作り直し。 萎えてしまいますが、実は、Apple に申請したら、…

Xcode 9 storyboard から h ファイルに drag して connect したら error...

Xcode 9 で ViewController を新設し、Class 化した m と h ファイルを作成。storyboard から h ファイルに object を drag して connect したら error... Xcode 9 storyboard から h ファイルに drag して connect したら error... Could not insert new ou…

Xcode 9 と git と gitlab

Xcode では以前から git を使った source 管理が出来ます。github にソースを置くこともできるのですが、licence の都合、source を public にしないと無料では使えません。private はお金がかかるということで、git の clone はないかと色々探していたら、g…

Interface Builder: Text View を配置すると、制約エラー

Main.storyboard でレイアウトしていて、Scroll View は一つの鬼門というか、一般原則が通用しないことがあるので注意が必要。 今日遭遇したのは、Scroll View > View > Text View と配置し、『よくわかる Auto Layout』に倣い、text view の上と左右に制約…

CoreData がもっと便利にって、知らなかった・・・

CoreData 使っています。 storyboard ファイルが吹っ飛んでしまい、やむやむ新規プロジェクトから作り直すハメに・・ まずは CoreData の model を作って、次に、Editor > Create NSManagedObject Subclasses... を選択して自動的にファイルを作ってと。慣れ…

Main.storyboard 逝く・・・

制約を色々追加していたら、昔色々試作していたらのがあだになったのか、カーソルがぐるぐる回って Main.storyboard が表示されなくなる。こうなると Xcode はあらゆる操作を受け付けなくなる。困った。アプリ強制終了、アプリ再起動を繰り返しているうちに…

よくわかる Auto Layout は良書

よくわかる Auto Layout (ISBN: 978-4-86594-032-9) は良書。 Xcode で新しく採用された Auto Layout。便利だということは分かっているけれども、今ひとつ使い方がよくわからない。いつもテキトーにやって、うまくいったり、いかなかったりしていたのですが…

CLLocation から MKCoordinateRegion にするには・・・

CLLocation のデータを、MKCoordinateRegion データにするにはどうするのでしょう。 色々調べたところ、 CLLocationCoordinate2DMake(0.0, 0.0); みたいな関数があり、え、CCLocation から x, y みたいな感じでプロパティ取り出すの? え?分かんね・・・と…

segue で画面遷移するときに値を渡せない・・・

Xcode で画面を作り、segue で接続してやると特にプログラムしなくても画面遷移ができてとても便利なんですが、画面遷移する折に遷移先に値を渡してやりたい時があります。 そんな時どうするのかよくわからなかったんですが、いろいろ調べてみた結果、以下の…

block の中で使う変数を変更する方法

Objective-C でいつの間にか block 構文を使えるようになって便利というか、method に勝手に組み込まれているので覚えざるを得ない状況です。 block って便利なんですが、文が長くなりすぎてしまいわかりにくいのが難点かと。 その他、block 内で変数を変更…

同期処理に semaphore を使う

CloudKit のプログラムを書いていると、サーバに対する Query 処理などでは非同期処理となる。通常はこれで特に問題がないのですが、フィールドの値に Reference 型を指定してある場合、マスターのレコードを query してサーバ側のレコード番号を取得してお…

CloudKit Dashboard で軽くハマる

CloudKit Dashboard で軽くハマりました。 Query しようとしたら、recordName is not queryable みたいなエラーメッセージ。初め、あ、query 可にしちゃいけないのね、と思って、query の属性を消していったら一向にエラーがなくならない。なんじゃこりゃと…

CloudKit Dashboard に変化が・・・

CloudKit Dashboard、変わったね! 今までは、保存されているレコードを表示するだけ・・・みたいな、意味ない感じだったんだけど、Dashboard から Query かけられるようになりました。 画面のデザインも一新され、使いこなすと使い易いのだと思いますが、ま…

CloudKIt Database を使って・・・

CloudKit Database を使っての印象。 良い点 CoreData いらないかもね。全部サーバに保存しちゃえば良い。 無料で使える容量が多いので、ほとんど無料で行けちゃうね。これはありがたい。 悪い点 蓄積したデータのメンテナンスはどうやるのがうまいやり方な…

結局、Objective-C の方がよいのでは・・・

昨日の続きとなりますが、特別な事情があり QR コードリーダーを急遽実装することになり、昔の醤油もとい source を引っ張り出して来て実装したのです。 info.plist の仕様変更という躓きはあったものの、ほとんどまんまで実装できました。理由は、ハードウ…

iOS 10 で、AVCaptureSession startRunning すると、error...

訳あって、制作中のアプリに QR リーダーを実装する必要が出て来て、ずいぶん前に作ったラーメンタイマーの source を引っ張り出して来て実装。 build & run で無事(?)error 発生・・・以前との違いは OS が 8 → 10 に変わったぐらい。 エラー内容を見る…

日付の比較は compare ですか。

Objective-C で日付の比較をしようとしたところ、どうも、うまくいかない。 if ( now > item.date ) こういうのはだめ。 なんで?と調べて見たところ、compare 使えと。 [now compare:item.date] --> 1 ............ now の方が最近 [now compare:item.date]…

SKLabelNode で画面中央に時計を表示すると、何秒かおきに横にずれてしまうのを解消。

SKLabelNode で画面中央に時計を表示した時のこと。時計は、シンプルに次のような形で HH:MM:SS。これ、何秒かおきに微妙右にずれ、左にずれを繰り返します。理由は、画面左右の中央に時計を表示しますが、時計の数字フォントの幅が、数によって微妙に異なる…

textView は曲者だ。

textView は曲者だ。以前もハマった記憶がある。 事象は、textView に文字を設定しようとしても設定できない状況。textView.text = @"hoge"; で設定できるはずなのに、全く反応なし。かなり調べて、例えば、.editable は頭に指定しないで、text の変更をして…

TLSv1.2 って何ですか・・・

事の発端はアプリから SSL 通信で CGI にアクセスし、JSON データを受領しようとした事。 NSURLRequest を使って、簡単・簡単、と思ったら、推奨していないので、NSURLSession を使えと叱られる。うわーめんどくセーと思いながら渋々書き換えたところ、error…

addObserver に UserDefaults を登録できる

プログラムを作るときに KVO って便利なんだけど、監視対象にするオブジェクトとして、UserDefaults を指定できることを知らなかった・・・ 随分遠回りな実装になってしまったところでできることに気がついて、その後、余分なコードを消し消ししてそっちの方…

ボタンを押したら SpriteKit に切り替えるには・・・

アプリを作成中なんですが、今のままの機能だけでは reject 必至だろうということで、ミニゲームの機能も持たせることにしました。アプリの画面にボタンを用意して、ボタンを押したら spritekit の画面に切り替えようとしたところエラー発生・・・ 呼び出し…

Xcode 8 では CoreData 用のファイルは automatic になったんだって

仕事でアプリを作る必要があり、CoreData も使おうと。ようやく作り方にも慣れてきたところで、まずはモデリングして、次に、Editor -> Create NSManagedObject Subclassess... を選んでファイルを生成してと、慣れた手順でファイルを作ったら、build でエラ…