全くとるに足らない日記

気が向いた時に書いた生活の記録を垂れ流すブログ

[swift] iOS13の日本語環境で異体字セレクタが上手く機能していない件について

2019-10-28 21:26:22 | アプリ開発
拙作のIOSアプリ「もじこ」の事であるが、iOS13環境において一部の文字がおかしい事に気付き、ここ数日調査研究をしていた。
もじこは約六万文字を収録しているアプリであるが、例えば、「辻」の文字であるが、これには二点しんにょうと一点しんにょうの二種類の文字があるが、両方とも二点しんにょうに表示されていた。
いろいろ調べた結果、Unicode文字管理における「異体字セレクタ」が機能しておらず、異体字においてもその元字が表示されているという事に行き着いた。
更に開発環境のシミュレーターで設定変更を繰り返し検証した結果、iOS13でも英語設定環境では異体字セレクタが正常に機能している事にも気付いた。
本当はiOS側の修正を待ちたいところではあるが、そうも言ってはいられないので下記の2行のコードを付け足した。

//強制的にUSモードにする(iOS13対応)
UserDefaults.standard.set(["us"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()

これは何かと言うと、アプリ中の文字設定を強制的に英語設定にしたのである。なお、この変更はもじこのVer2.5から適用しました。既にアプリストアからダウンロード可能です。
これでとりあえずは問題回避となったが、デフォルトの文字入力までもが英語モードになるので文字入力の際にいちいち日本語に切り替える操作が必要となる副作用がある。
iOS13が抱える闇はまだまだ深いようである。

swift4 realmにcsvから大量の初期データを取り込んだ状態でアプリをリリースする方法

2019-08-17 11:50:00 | アプリ開発
Swift4 RealmにCSVからデータを取り込んだ状態でアプリをリリースする方法についてネット検索していたところ、Swift4に対応した情報が少なかったのでここに個人的メモ。

CSVからRealmへの取り込みは、Swift4でも他のブログ等の掲載情報にて取り込めた。
ちなみに、6万個近くのレコード数でも余裕で取り込めた。

シミュレーターで取り込み処理を走らせて取り込んだRealmデータファイルの場所は下記のコードを実行することで把握できる。

print(Realm.Configuration.defaultConfiguration.fileURL!)

つまづいたのは最後の過程。Xcodeにコピーした*.realmファイルをアプリデフォルトのファイルにする書き方。
過去のネット情報に多くあったRealm.Configuration(readOnly: true, filePath: と書くと通らなかった。
原因を突き詰めると「filePath:」という書き方が現在では通らない。
しかし、「fileURL:」なら通ると分かった。
試行錯誤の結果、次の書き方で通った。下記はXcodeにコピーしたファイル名をdefault.realmとして記述している。
//realmファイルの読み込み設定(読み込み専用モードの場合)
let filePath = URL(fileURLWithPath: Bundle.main.path(forResource: "default", ofType: "realm")!)
let config = Realm.Configuration(fileURL: filePath , readOnly: true)
Realm.Configuration.defaultConfiguration = config

以上、個人的メモ。他の同志の一助になるとこれ幸い。