Cannot find type 'anyClass' in scope @Xcode

Objective-CとSwift混在のプロジェクトで開発していたところ Swiftファイルを開いたらObjective-Cで定義されているクラスが cannot find type 'anyClass' in scope のようなワーニングが表示された。 ※ 画像では AppDelegate クラスは実際に定義されておりビルドも通るがエラーが表示される。 ビルドするとエラーが消えて、該当のSwiftファイルを閉じて開くとまたエラーが表示されるようなおかしな挙動。 対策 Xcodeのプロジェクトで Build Setting の項目 Precompile Bridging Header を NO に設定する。 Build Setting の検索窓に Precompile Bridging Header を入力すればすぐ見つかります。 参考 https://developer.apple.com/forums/thread/691672

Swift(iOSアプリ)でprintと debugPrintとNSLog

iOSアプリを作っているときログ出力をするならprint|debugPrint|NSLogいずれかを使うけど、Releaseビルドではどれが出力されるのか確認したことが無かったので確認をした。 Objective-CでiOSアプリを作っているときNSLogの出力はReleaseビルドでもログ出力されることは確認していたのでよくあるifdefマクロで LOG(...) のようにしていた。 実装 実装はXcodeでFile > New > Project... > AppでSwiftを使ったアプリ作成 ViewController.swiftの viewDidLoad() に下記を追記 print(">>> this is test message from print") print(">>> this is test message from debugPrint") NSLog(">>> this is

Unable to install "MyApp" 追記あり

開発中のiOSアプリをXcodeから実機インストールしていたら Unable to install "MyApp" というエラーが発生するようになった。 MyAppはアプリ名 エラーのDetailsを確認すると This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed. 私の環境では、このエラーは再現したりしなかったり。 Xcodeでキャッシュの削除(Product > Clean Build Folder | ⇧⌘Kまたは⇧⌥⌘K)で再現しなくなったりまた再現したり、XcodeやmacOSの再起動などしても変わらず。再現性がわかりませんでした。 思い返すとこの開発中のアプリはEnterpriseアカウントでアプリの配布をしているので、以前にEnterprise配布ビルドのアプリをインストールして以来ずっ

iOS13でアプリ名のローカライズがおかしくなる問題

日本とと英語に対応したアプリを作成していて開発メンバー向けに配布したところ「iPhoneのホーム画面に表示されるアプリ名を正式版にして欲しい」と連絡が来た。 そのとき実際にはアプリ名を設定済みでSimulatorでも検証機のiPhone7(iOS12.4.1)でもアプリ名の表示を確認していた。 iPhoneのホーム画面に表示されるアプリ名のローカライズ 1. InfoPlist.string という Strings File を作成 XcodeProjectのLocalizations設定 デフォルトのEnglishに加えて、+ からJapaneseを追加。 このときローカライズ対応するファイルを指定しないと追加されないので、あらかじめ InfoPlist.string を作成しておく。 必要に応じて Use Base Internationalization をチェックするとBaseも追加される。 ローカライズに対応したファイルはXocde上では1つのファイルが折りたたまれたように表示されるが 実体は言語毎にディレクトリが作成されて内包されている

iOS13のFontFamilyName

* iOS8系でフォントの一覧 * iOS9系でフォントの一覧 * iOS10系でフォントの一覧 * iOS11系でフォントの一覧 * iOS12系でフォントの一覧 * iOS13系でフォントの一覧 取得方法 familyNameからfontNameを取得する。前回かより少し変更しました。 UIFont.familyNames .sorted { $0.compare($1) == .orderedAscending } .flatMap { UIFont.fontNames(forFamilyName: $0).sorted { $0.compare($1) == .orderedAscending } } .forEach { print($0) } 確認環境 iPhone 11 Pro Simulator (iOS13.3) 結果抜粋 AcademyEngravedLetPlain AlNile AlNile-Bold AmericanTypewriter AmericanTypewriter-Bold Am