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

Xcode のバグのせいで、Main.storyboard が開けなくなり、已を得ず作り直したことは以前書いた通りです。

その後、落ちる条件がはっきりとわかりました。stack view の中に tableView を入れると、no answer になり、Xcode を強制終了するしかないように・・・

これ絶対バグだから直して欲しい。ちなみに今の Xcode のバージョンは 9.1。

Custom Cell は難しいね。

Custom Cell は難しい。

何が難しいかというと、設定方法がよくわからないのと、method の書き換えがよくわからない。

製作中の code が飛んでしまったので、已む無く作り直しているのですが、今回ハマったのは、custom cell の部分。Table View で一覧表示して、detail へ画面遷移。その後、一覧に戻ってくると、custom cell が吹っ飛んでしまい、デフォルトの表示になってしまう現象が・・・よく分からないので以前の source を読んでいたら、以下のメソッドをいじっていたことが判明。

- (void)controller:(NSFetchedResultsController *)controller

   didChangeObject:(id)anObject

       atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type

      newIndexPath:(NSIndexPath *)newIndexPath

また、configureCell の引数を変えてしまっているのも現象を複雑にしている要因に。

結局、以下のコードを

[self configureCell:[tableView cellForRowAtIndexPath:indexPath] withEvent:anObject];

 

このように変更。

[self configureCell:[tableView cellForRowAtIndexPath:indexPath] withObject:anObject];

 

configureCell の定義も変えてしまっていたので、これで問題なくなったけれども、果たして正しい方法かは不明。

 

UISearchBar と UITableView

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

苦労して作成した source が残っているのは救いなのですが、storyboard が見れないので、class の指定や data source の指定がどうだったかはっきりとわからないのですが、結局身についていないからこうなるのだと自分に言い聞かせて作業しています。

そんな状況の中、これは鬼門だと思っていたのが search bar の設定部分です。ここは新規で作るときに、様々な資料を読んでみたけど情報が古かったりして試行錯誤の末ようやく実装できた部分です。今日、そこに挑戦しようとやってみたのですが、案の定ハマりましたが、ハタと気付いたのが、search bar  は table view に付随するものなので、まずは table view の部分を仕上げた上で search bar の設定をしないといけないんだなと。順番を逆にして、search bar の部分を先に仕上げようとしていたのでハマってしまったのだということに気づいてからは、割とすんなりと仕上げることができました。

という訳で、また新規で作るときには古い source を見ることになるだろうということは予見できたので、comment を充実させつつ仕上げました。

よかったよかった。

managedObjectContext は何処へ・・・

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

具体的には、managedObjectContext は何処行った?Project を新規生成するときに Use CoreData にチェックを入れると AppDelegate.h に定義が自動で書かれているはずなんだけど、以下の宣言が無くなっている。

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;

@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

 

書いてあるのはこれだけ。

@property (readonly, strong) NSPersistentContainer *persistentContainer;

さみしいね・・・

調べてみたら、persistentConteiner.viewContext に置き換わるようです。

コンテナに集約したということでしょうか。便利だから歓迎だけど、ちょっとビックリしたね。

解決:macOS High Sierra から iCloud にアクセスできない

解決しました。

結論、再起動したら治りました。でも、かなりダメージがあって、パスワードの更新をしたくなかったけどせざるを得なくなる状況に。めんどくさいのですが。

どうも、High Sierra はバグが多い気がする。アップデートしてよ。

macOS High Sierra から、iCloud にログインできない・・・

macbook 12 in でエラー。iCloud に接続できないと。パスワードを入力してもエラー。iTunes や AppStore ではエラーにならないことから、認証サーバでのトラブルと考えられます。この影響により、iCloud のメールを macbook で受けることができません。また、利用頻度は低いとはいえ、iCloud の disk に接続できません。

早く直してもしいところです。ってか、こういう場合、苦情を受け付ける窓口をぜひ分かりやすく公開して置いてほしいものです。