iOS

HKWorkoutをGraphQLで扱うためにスキーマ設計をやった

モチベーション github.com 趣味開発のHealthKitを使ったiOSアプリから外部にワークアウトのデータを保存したい 将来的にiOS以外のクライアントでデータを取得したい 構築するAPIをGraphQL APIとして進める際にスキーマ定義が必要なので設計の手順をログとし…

HealthKitスターターキット

iOS

運動中の鉄分補給を怠らない。 開発環境 > xcodebuild -version Xcode 14.0 Build version 14A5228q Xcodeはbetaだが本記事の内容は現時点でbetaになっている内容に言及はない。 モチベーション HealthKitを利用する際にやることをメモ。一つ一つ見ると大し…

delegateパターンの実装で迷わないための考え方

iOS

今まで雰囲気で書いていたことの本質的な理解をやっていく! 開発環境 > xcodebuild -version Xcode 14.0 Build version 14A5228q Xcodeはbetaだが本記事の内容はiOS16未満のAPIを使用。 モチベーション delegateパターンを実装する際に迷いが生じたのでもう…

RenovateでMint管理のライブラリ更新を自動化する

iOS

モチベーション Renovate*1の管理対象にMint*2で管理しているライブラリを追加したい RenovateはCocoaPodsなどには対応しているがMintは直接対応していない*3 直接対応していないツールも正規表現書けば対応可能 正規表現書こう! コード realm/SwiftLint@0.…

Xcodeエラー対応: ld: symbol(s) not found for architecture x86_64

開発環境 > xcodebuild -version Xcode 13.3 Build version 13E113 エラー Undefined symbols for architecture x86_64: "SampleModule.SampleModule.init() -> SampleModule.SampleModule", referenced from: Test20220519.ViewController.viewDidLoad() ->…

HealthKitでcyclingの時速は直接取得できないぞ!

結論 HealthKit経由で取得したワークアウト(HKWorkout) から時速を取得するには、 totalDistance(HKQuantity) と duration(TimeInterval) を使って算出する必要がある。 let distance = workout.totalDistance!.kilometers() let averageSpeed = distance …

instantiateViewController(identifier:creator:)を試す

使ったことがないAPIはミニマムですぐ書く! 開発環境 > xcodebuild -version Xcode 13.3 Build version 13E113 モチベーション instantiateViewController(identifier:creator:) を使ったことがないので使ってみたい instantiateViewController(identifier:…

Combineのdebounceを試す

開発環境 > xcodebuild -version Xcode 13.3 Build version 13E113 モチベーション debounceを使ったことがないので使ってみたい debounce Publishes elements only after a specified time interval elapses between events. https://developer.apple.com/d…

Core Dataを試す

本記事は下記を参考にしています。 developer.apple.com 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d Core Data とは Persist or cache data on a single device, or sync data to multiple devices with CloudKit. https://develope…

SwiftUI x Combine 練習1

本記事は下記を参考にしています。 blog.studysapuri.jp 前々からやりたかったSwiftUIとCombineを組み合わせた実装をやってみる! 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 作ったもの 2.5秒ごとに [1, 2, 3, 4, 5] をシャッフル…

「Combineをはじめよう」を読んだ

nextpublishing.jp 第2章 SubscribeとSubscription import Combine let subject = PassthroughSubject<String, Never>() final class Receiver { let subscription: AnyCancellable init () { subscription = subject .sink { value in print("received:", value) } } } let</string,>…

sink(receiveValue:)の戻り値を破棄せずに保持しておく必要がある理由を探す

本記事は下記を参考にしています。 nextpublishing.jp 結論 そういう仕様。 This method creates the subscriber and immediately requests an unlimited number of values, prior to returning the subscriber. The return value should be held, otherwise…

SwiftUIのTextEditorの実体がUIKitのUITextViewであることを確認する

本記事は以下記事の内容を参考にしています。 qiita.com 開発環境 # Xcode > xcodebuild -version Xcode 13.1 Build version 13A1030d # lldb (lldb) version lldb-1300.0.32.4 Swift version 5.5.1-dev はじめに tokizuoh.hatenablog.com (as TextEditor is…

SwiftUIの@FocusStateを試す

UITextViewの設定がTextEditorに反映されるソースを求めて*1インターネットの海をさまよっていたときに出会ったproperty wrapper。 使ったことが無かったので試す。 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンシ…

SwiftUIのTextEditorのテキストの余白はどう調整する?

結論 UITextView.appearance().textContainerInset = UIEdgeInsets(top: 10, left: 50, bottom: 40, right: 20) 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンショット: iPhone 13 Pro Max / iOS15.0 背景 前にUITe…

SwiftUIで複数行の入力を行いたい時はTextEditorを使おう

前にUITextViewの記事を書いた時にSwiftUIだとどうやるんだ?と思ったのでやる。 tokizuoh.hatenablog.com 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンショット: iPhone 13 Pro Max / iOS15.0 TextFieldのheight…

UITextViewのテキストの余白を0にする

この前カルボナーラを作ったらベチョベチョになって失敗した。料理は難しい。 開発環境 > xcodebuild -version Xcode 13.1 Build version 13A1030d 記事中のスクリーンショット: iPhone 13 Pro Max / iOS15.0 結論 デフォルト 余白0 import UIKit final clas…

FoundationのNumberFormatterを試す

nextpublishing.jp 上記を読んでいる時にNumberFormatterが出てきた。 使ったことがなかったので試す。 開発環境 > swift --version swift-driver version: 1.26.9 Apple Swift version 5.5.1 (swiftlang-1300.0.31.4 clang-1300.0.29.6) Target: x86_64-app…