ikeh1024のブログ

ZennやQiitaに書くにはちょっと小粒なネタをこちらに書いています

SwiftのプロジェクトからC++の静的ライブラリを利用する

概要 Swiftのプロジェクトに対して、C++で書かれたライブラリのプロジェクトを追加して、アプリのビルド時にライブラリもビルドされるようにしたい 参考 How can I use an .a static library in swift? SwiftとObjective-C連携 with Xcode 手順 下記の通りプ…

Xcodeで特定のファイルのWarningを非表示にする

概要 すぐには変更できないObjective-Cのファイルがあり、暫定処理としてWarningを非表示にしたい 下記の通り、Compiler Flagsに-wを渡せば良さそう ただし.hはこれに含まれずどうするか分からず仕舞い How to suppress header file warnings from an Xcode …

macOSのMACOSX_DEPLOYMENT_TARGETの下限について

概要 現行のXcode15.2.0ではMACOSX_DEPLOYMENT_TARGET(いわゆる最低対応OS)が10.13以上でしか選択できない これはXcode14から10.13以上となったみたい Xcode14とXcode13の差異として、macOS 12 SDKが含まれるかどうかがある https://forums.developer.apple.…

NSStringのカテゴリ拡張: NFCへの正規化/安全なパーセントエンコーディング

(追記)下記が使えるの? precomposedStringWithCanonicalMapping NSString+Extension.h #import <Foundation/Foundation.h> @interface NSString (Extension) - (NSString *)normalizeFormC; - (NSString *)stringByRemovingPercentEncodingIfNeeded; @end NSString+Extension.m #impo</foundation/foundation.h>…

pyenvでPythonのインストール

pythonのバージョン確認とインストール Poetryをサクッと使い始めてみる # インストールされているバージョンを確認 pyenv versions # インストール可能なバージョンを表示 pyenv install --list # 指定したバージョンをインストール pyenv install <python-version> # グロ</python-version>…

macOSアプリの各サイズのアイコンを自動作成するツール

いろいろ試してみてこれが一番良かった。出力されたフォルダをAssetsへドラッグ・アンド・ドロップでOK。 Icon Set Creator ちなみに一つの画像を用意すればOK、な仕組みは現状macOSには無いようです。残念。 Xcode14~時代のAppアイコン Single Sizeがない

ビルドエラーがXcodeで表示されないときの一時的な対処方法

概要 Xcode not displaying compile errors 下記をUncheck.

MacでTwitter用に動画を変換するときのメモ

Twitter用に.movをアップロードしようとしたらエラー 下記でmp4に変換できる。 convert .mov to .m4v with mac terminal brew install ffmpeg ffmpeg -i input.mov -acodec copy -vcodec copy output.m4v ただしサイズ(1920*1024だったっけ?)も考慮が必要で…

Peripheryの導入とHomebrew・Sandboxのエラー対応

概要 以下の通りに進める。 【Swift】Peripheryで不要なコードを見つけてビルド時間を短縮する その上で下記のエラーが出たので対応を行った。 エラー対応 periphery: command not found 下記のエラーが発生。 /Users/ikeh/Library/Developer/Xcode/DerivedD…

UserDefaultsのplistの場所とリセット

Screenshots Code struct ContentView: View { // MARK: - Properties var library: URL? { FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first } var preferences: URL? { library?.appendingPathComponent("Preferences") } va…

アプリのフレームワークを確認する方法のメモ

5GUIs これが現状動いていない状態 Apple’s use of AppKit, Mac Catalyst and SwiftUI in macOS nmでシンボリック情報を取得して…ということらしい。Swiftで取る方法は無いかも nm コマンド

C言語のデータ型とSwiftのデータ型の対応表

GitHub Copilotで書き出したときのメモ (間違いあったらご指摘ください) C言語のデータ型 Swiftのデータ型 char Int8 unsigned char UInt8 short Int16 unsigned short UInt16 int Int32 unsigned int UInt32 long Int unsigned long UInt long long Int64…

SwiftでMacのシリアル番号とハードウェアUUIDを取得

概要 Swiftで下記に記載されているシリアル番号とハードウェアUUIDを取得する 実装 func loadIOPlatformExpertDevice(ioService: String, propertyKey: String) -> String? { let service = IOServiceGetMatchingService(kIOMainPortDefault, IOServiceMatch…

macOSアプリからPythonを呼び出そうと試みたときのメモ

結論 今のところ、ピュアなPythonは組み込んで使えそう 3rd partyのライブラリを含める方法は分からずじまい 参考 Embedding a Python interpreter inside a MacOS / iOS app, and publishing to the App Store successfully. 一番まとまっている python-std…

GeometryReaderをbackgroundで呼び出してビューのサイズを取得するのはバッドプラクティス

GeometryReaderのネストが嫌だからと言って、下記のようにviewSizeGettgerを作ってもあんまり良くないという話。 これは呼ばれるのがonAppearの一回きりなので、ビューの変更時、例えばデバイスの回転などに弱い。 参考: SwiftUI - How to get GeometryReade…

SwiftUIのToggleでget/setを利用してBinding<Bool>を渡す

ToggleにBinding<Bool>を直接渡すのではなく、get/set経由で利用する書き方を見つけたのでメモ。 https://github.com/BigBerny/magicquit/blob/main/MagicQuit/ContentView.swift#L245-L253 ここではToggleの値が変わった後にデータの保存処理をしている。 import </bool>…

macOSのUI Element Colorsのプレビュー

追記(2023-09-04) 下記の通り昇華させてみた。 github.com 概要 定義済みNSColorのイメージを見たかったので作成。 今回スクショの手作業が多かったので、次回はもっと効率化する。 ダークモードも追加したい。 参考 UI Element Colors Gist NSColorのプレビ…

コマンドでmacOSアプリケーションをビルドする

参考 xcodebuildコマンドの実行例集 スマホアプリのコマンドビルドまとめ(iOS編) xcodebuild build/archiveを使う例。buildとarchiveの差異はわからんです。 Xcodeの普段遣い的にarchiveはリリース用ビルドという感じ…? xcodebuildコマンドで.ipaファイル…

証明書周りで参考になりそうなリンク

メモ 証明書の期限が切れる場合は、更新するのではなく新しい証明書を作成するみたい 参考 怖くないiOSの証明書 Developer ID証明書を作成する Apple Developer Programの証明書(Certificates)の種類まとめ iOSアプリの証明書まわりの話をしっかりと理解す…

円記号問題とその経緯

円記号問題の歴史 時系列がわかりやすい yasuokaの日記: YEN SIGN問題縁起 時系列詳細 バックスラッシュと円記号の話 韓国語でも同じ問題があるらしい(バックスラッシュがウォンで表示される)

Swiftで適当なエラーを使いたいときの実装

参考 struct MessageError: Swift.Error & CustomStringConvertible { var description: String}— おもちメタル (@omochimetaru) 2022年11月5日 struct MessageError: Swift.Error & CustomStringConvertible { var description: String } 使用例 実装例 let…

forkしたリポジトリを本家リポジトリの最新情報で更新する

Git

概要 main(デフォルトブランチ)に関しては下記のようにGitHubから更新可能 developに関しては下記の手順。 本家のdevelop(upstream)をfetchして情報を取得 forkしたdevelopをチェックアウトし、本家のdevelop(upstream)にマージ 参考 SourceTreeで、GitHubで…

SwiftPMの自動アップデート

DependabotはSwiftPMに非対応 GitHubは同様のDependabotというサービスを買収したものを公式サービスとして提供していますね。ただDependabotはSwiftの対応がもう一つなのでSwiftにはRenovateがいいですね。— kishikawa katsumi (@k_katsumi) May 22, 2021 D…

NSSavePanelの保存パスを記憶しているplistの場所

NSSavePanel等で前回選択したパスが保存されている場所は以下の通り。 ダウンロードしたファイルが入るフォルダー /Users/ユーザ名/Library/Preferences/jp.co.ikeh.Hoge.plist またはコードから消す場合はNSUserDefaultsでキーを指定する。 Make NSSavePane…

ArchiveがGeneric Xcode Archiveとなり公証できない問題の対処

概要 static libraryを含めるプロジェクトの場合、Archiveがうまく作られずに公証処理に進めない問題。 ライブラリ側のbuild settingsにてSkip InstallをYesにする必要がある。 参考 xcode is creating generic xcode archive instead of iOS App Archive de…

FileManager.default.urlsの出力結果

概要 アプリから何かしらのファイルを保存したい場合、フォルダのパスの取得にurls(for:in:)を使用する。 以下はその際の出力のメモ書き。 参考 urls(for:in:) FileManager.SearchPathDirectory FileManager.SearchPathDomainMask 出力例 macOSでの出力例 今…

Makefileで複数行のコマンドを書くときのセミコロン

概要 とても難しい。わかるようなわからんような。 一旦シェルスクリプトで考えるといい。 参考 シェルスクリプトのセミコロンの打ち所がわからん 複数行にわたるコマンドを実行したい時 makefileで、if文 / for文を使う、あるいは複数行のコマンドを書く方…

SwiftでColorSpaceを扱うときのメモ

まとめ macOS/iOSアプリを作るときはDisplay P3を採用すれば良さそう。 より色の表現幅が大きいため。 参考 Color.RGBColorSpace iOS 10 から導入された拡張sRGB色空間 (Extended sRGB Color Space) とは RGB値だけでは色は1つに定まらない NSColor の Compo…

SwiftUIのプレビューのデバイス設定

SwiftUIのプレビューのデバイス設定 設定方法 struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() .previewDevice("iPhone 8") ContentView() .previewDevice("iPad Pro (9.7-inch)") } } 使用できるデバイス…

macOSアプリ→Sentry→Slackの連携を考えたときのメモ

概要 macOSアプリ→Sentry→Slackの連携をしようと思ったけど、SentryとSlackの連携は有償プランなので諦めた。 忘備録としてメモだけ残す。 Memos SentryでiOSアプリのイベントログを収集する - OPTiM TECH BLOG SentryとSlackの連携手順まとめ 公式 Advanced…