LoginSignup
0
0

More than 1 year has passed since last update.

SwiftUIでHotReload(InjectionIII)

Posted at

結論から書くとやることは3つだけです。

1 Hot ReloadingとInjectを追加
2 Other Linker Flagsに-Xlinker -interposableを追加
3 コードにおまじないを追加

※前提条件
InjectionIIIをダウンロードしてること

Hot ReloadingとInjectを追加

SPM(Swift Package Manager)のやり方です
スクリーンショット 2023-04-29 4.36.36.png

HotReloadingの追加方法はこちらのReadMe見てください

Injectはそのまま追加すればいけると思います

Other Linker Flagsに-Xlinker -interposableを追加

スクリーンショット 2023-04-29 4.48.48.png

ReleaseもDebugもやっちゃってますけど、使うのはDebugだけだと思うんで、DebugだけでOKです

ちなみにPROJECTとTARGETS両方に設定した場合動かなかったり、nozerocode発生して原因がわからなくなることあるので注意してください。

コードにおまじないを追加

2つあります

一個目

@ObservedObject private var iO = Inject.observer

二個目

    VStack {

    }
    .enableInjection() //←これ

画面の部分(コピペOK)

import SwiftUI
import Inject
    
struct ContentView: View {
    @ObservedObject private var iO = Inject.observer

    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundColor(.accentColor)
            Text("Hello hello")

        }
        .padding()
        .enableInjection()

    }
}

まとめ

SwiftUI HotReloadみたいな感じで調べて色んな記事を参考にやってみたけど、全然うまく行かなくて、
『できないやんけ!!!!!!!!!!!!!!!クソがぁぁぁぁぁ!!!!!!!!!!!!!!!!!!』

って思いながら、HotReloadなしで進めようか悩んだんですけど、FlutterではHotReloadが標準だったんでやっぱ毎回ビルドすんの無理!!!やだ!!!!!って思って頑張ってやったらできました

下記を参考にしながらやるのが一番いいかもです。

追記

もしかしたらHot Reloadingはいらないかもっす

その時は消してくださいまし

ここ最近で一番苦戦したかもです

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0