ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

Swift

The Basics

Swiftで8進数ってなんと表現する?と思って引っかかったサイト。 docs.swift.org 今まで他人のBlogやコードでSwiftをかじってきて何となくの理解だったのがここを読んで知らないことだらけと気づいた。 今後少しずつ読み進めていこう。 Taplsは知らなかった…

[[self class] new]をSwiftで行う

objcだと頻繁に使ってた[[self class] new]をSwiftではどうやるか? 調べたらすぐ見つかって、こうすれば良いみたい。 [self class]はtype(of: self)に置き換えられる。 required init()が必要になるのが肝の様だ。 requiredって何? gist.github.com メソッド…

XCTest で setup

テストクラスをNewするとsetUpWithError()が含まれている。 ここでメンバ変数を初期化して準備しようとするとエラーでコンパイルできない。 メインのプロジェクト(Test)でAというクラスを定義 import Foundation class A { func foo() -> Int { return 0 } }…

String(format:)

String(format:)を使うとsprintf的なことができる。 ただ文字列と思って%sを使うとクラッシュする。 文字列はオブジェクトだから%@にしなきゃいけないのを忘れてた。 String(format: "%@,%d", "123", 456) Playgroundで試していたらString(repeating:count:)…

2 duplicate symbols for architecture arm64

久しぶりにテストを実行しようとしたらコンパイラが通らなくなってた。 2 duplicate symbols for architecture arm64 違った。テストしようとしたタイミングでコードも変更してて、それが悪くて通常も通らなくなってた。 Report navigatorで確認すると何が重…

TextField

TextFieldで編集が終わったら値をセットする方法。 Optionalを扱うモデルを用意してBindするところまで。 OptionalだとTextFieldにBindingできないのでView内のメンバnameで一旦受ける。 onAppearのタイミングでセットする。 import SwiftUI // CoreDataを想…

UndoManager

Swiftになって勝手が違うのでこちらを後で読む developer.apple.com いろいろ巡ってここに辿り着く kouki.hatenadiary.com Obj-Cの時と同じという結論に至る。 ViewはStructureなのでUndoManagerのターゲットにはなれないのでモデルかビジネスロジックの方に…

NavigationLink で遷移してから戻る場合

developer.apple.com presentationMode.wrappedValue.dismiss() で戻れる struct SomeView: View { @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode> var body: some View { Button { presentationMode.wrappedValue.dismiss() } label: { T</presentationmode>…

Label

developer.apple.com Image使わなくてもアイコン表示できる。 Label("Lightning", systemImage: "bolt.fill") labelStyleでアイコン指定してても非表示にできる。 Label("Lightning", systemImage: "bolt.fill") .labelStyle(.titleOnly) 自分でStyleを作る…

ViewでOptionalの扱い

ずっとOptionalの扱いで悩んでいて、モデルにラッパーとなるオプショナルがない変数を追加して対処していた。 Viewのメンバ変数で一旦受けて処理すればいいのか。 今まで気づかないとかアホすぎた。 zenn.dev

editMode

developer.apple.com EnvironmentValuesとして扱っている。 ドキュメントより @Environment(\.editMode) private var editMode @State private var name = "Maria Ruiz" var body: some View { Form { if editMode?.wrappedValue.isEditing == true { TextFi…

NavigationLink

NavigationViewのリンク NavigationViewはdeprecatedになって NavigationStack か NavigationSplitView を使うという事らしい。(iOS 16から) developer.apple.com 最初のブロックはリンク先となるViewを指定する。 labelのブロックではcellの中身を指定する…

SwiftUIでモーダル表示

モダンな表示をする場合 .sheet()を使用 capibara1969.com フル画面で表示する場合 . fullScreenCover()を使用 capibara1969.com

SwiftUIでFlipアニメーション

betterprogramming.pub これで回転させられる。 SomeView.rotation3DEffect(Angle(degrees: 10), axis: (x: 0, y: 1, z: 0))

7セグフォント

DSEG7 フォント、これいい qiita.com ダウンロードしたttfファイルをXcodeにドラッグしinfo.plistにフォント名を登録で使えるようになる。 info.plistへの記述 Text("00:00") .font(.custom("DSEG7Classic-BoldItalic", size: 200))