ひとしれずひっそり

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

2023-02-01から1ヶ月間の記事一覧

Structureは継承できない

オブジェクトのシリアライズでStructureを定義するとjsonなどに変換しやすくなる。 既存ソフトの置換えをしていて次の様な流れで処理しようとしている。 Export Object(Class) -> Struct -> JSON Import JSON -> Struct -> Object(Class) Classは継承したも…

willSave()はsetPrimitiveValue(:forKey)を使え

Core Dataを使っていて保存前に作成時刻や更新時刻を記録したい時にwillSaveのタイミングで記録できる。 developer.apple.com とりあえずカスタムクラスを作成して、willSaveで普通にプロパティで設定してみる。 import Foundation import CoreData @objc(It…

余白を押した時に反応させる場合はcontentShapeを使う

ListやFromを使用した時のCellにTextを使ったとして、表示される文字を押すと反応するが、余白を押すと反応しない。 contentShape()を使用すると余白にも反応する。 毎回忘れて検索するので、書いておく。 struct ContentView: View { @State var showingAle…

M5Stamp S3 (3) Lチカ

IoT

M5Stamp S3 でLチカをしてみる。 M5Unifiedで使ったのにちょっと手を加えただけで動いた。 katsuyoshi.hatenadiary.com LEDはM5Stamp picoのソフトほぼそのままで動いた。 そのままで動いたということはRGBではなくGRBの順になっている様だ。 gist.github.co…

3軸トゥールビヨンの置き時計【3Dプリント用STLデータ】購入した(6)

暫く放置していたけど少しずつ進めないとと思って少し進めた。 組み立てはこちらを見て進める。 www.youtube.com 電源ソケットのケーブルが短かった。 思わぬハンダ付け作業が入ってしまいゼンマイユニットの固定までで終えた。 次回は動画の 2:15 くらいか…

M5Stamp S3 (2)

IoT

ハード的な仕様はこちらから辿れる。 github.com M5Stamp picoの置き換えを考えているので比較してみる。 公式サイトから引用 S3の方はハーフピッチになっていてI/Oが沢山あるが、付属のピンヘッダー(2.54 mmピッチ)で使える部分で比較する。 左側、GROVE PI…

M5Stamp S3 (1)

IoT

M5Stamp S3が届いた。 M5Stamp picoの置換えとして捉えているがI/Oが倍くらいに増えてるのでかなりのことができそう。 裏にはLCD用の端子もあり盛りだくさん。 PlatformIO PlatformIOでビルドしようとしたらESP32じゃないよといわれた。 This chip is ESP32-…

setPrimitiveValue(_:forKey:)でhasChangesにならない

CoreDataでdynamic propetyが作られる。 @NSManaged public var name: String? 素のままではなく加工して使いたい場合にdynamic propetyの代わりにprimitiveValueやsetPrimitiveValueを使う。 @objc public var name: String { get { return primitiveValue(…

TextFieldでOptional値を扱う場合の改善

前に書いたTextFieldでOptional値を扱う場合にView内の@State属性を付けたメンバー変数に一旦渡して処理する方法を試した。 メンバー変数に値を渡すタイミングとしてonAppear()を使っていた。 TextField - ひとしれずひっそり onAppear()は描画時に1回呼ばれ…

UndoManagerの実装

ViewにToggle Swithを置いてOn/Offさせ、その操作のUndo/Redoを試す。 変更を通知できる様にObservableObjectをアダプトする。 objectWillChangeというプロパティが使える様になり、変更前にsend()を送ることでViewに更新が必要な事を伝えることができる。 …

SW_CPU_RESETがかかる

IoT

M5Stamp picoでデータを取っている装置のソフトを作り直して、どうも挙動が変なので調べてみる。 通常DEEPSLEEP_RESETで立ち上がってくるのが、 rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 188777542, SPIWP:0xee clk_drv:0x00,…

オブジェクトからクラス名を取得するやクラス名からオブジェクトを生成

現時点でSwift流のやり方は分かってない。 従来からあるNSClassFromString()、NSStringFromClass()を使う。 オブジェクトからクラス名を取得 class A {} NSStringFromClass(A.self) // -> "__lldb_expr_13.A" 空間名(という表現でいい?)がAの前につく様だ。…