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 はバグが多い気がする。アップデートしてよ。