https://www.avanderlee.com/swift/dependency-injection/ https://zenn.dev/yimajo/articles/e9f72549270873
https://zamzam.io/swift-dependency-injection-via-property-wrapper/
| // | |
| // Runtime.swift | |
| // Swift Runtime [Swift 4] | |
| // | |
| // The MIT License (MIT) | |
| // | |
| // Copyright (c) 2016 Electricwoods LLC, Kaz Yoshikawa. | |
| // | |
| // Permission is hereby granted, free of charge, to any person obtaining a copy | |
| // of this software and associated documentation files (the "Software"), to deal |
| import SwiftUI | |
| import PanModal | |
| struct ExampleView: View { | |
| @State var detail: AnyView? = nil | |
| @State var items: [String] = ["Detail 1", "Detail 2", "Detail 3"] | |
| var body: some View { | |
| NavigationView { |
| import Foundation | |
| extension Data { | |
| var prettyPrintedJSONString: NSString? { /// NSString gives us a nice sanitized debugDescription | |
| guard let object = try? JSONSerialization.jsonObject(with: self, options: []), | |
| let data = try? JSONSerialization.data(withJSONObject: object, options: [.prettyPrinted]), | |
| let prettyPrintedString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) else { return nil } | |
| return prettyPrintedString | |
| } |
| import SwiftUI | |
| import UIKit | |
| // from https://github.com/cashapp/AccessibilitySnapshot | |
| import AccessibilitySnapshotCore | |
| struct AccessibilityPreview<Content: View>: View { | |
| let content: Content | |
| var body: some View { |
| @UIApplicationMain | |
| class AppDelegate: UIResponder, UIApplicationDelegate { | |
| var window: UIWindow? | |
| internal func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { | |
| GitHubAPI.Users(userName: "minsone").request(completion: { result in | |
| print(result) | |
| }) | |
| } | |
| } |
| #!/usr/bin/env ruby | |
| def find_interface_type(key, path) | |
| cmd = <<SHELL | |
| cat #{path} | grep "property descriptor for #{key}.type :" | sed -E "s/.* : (.*)\\?/\\1/g" | |
| SHELL | |
| #puts cmd | |
| value = `#{cmd}` | |
| #puts value | |
| return value.strip |
| require 'xcodeproj' | |
| def makeTestTarget(target, path) | |
| output = "\n {" | |
| if !(path.include? "Application.xcodeproj") | |
| output += "\n \"parallelizable\" : true," | |
| end | |
| output += "\n \"target\" : {" | |
| if path.include? "Application.xcodeproj" |
| $ ( tuist generate ) 2>&1 | tee tuist_generate.log | |
| $ cat tuist_generate.log | grep "unwanted side effects" | wc -l | awk '{print $1}' | |
| 12 |
| https://github.com/mattgallagher/CwlDemangle | |
| https://stackoverflow.com/a/32171878 | |
| iOS List Modules tweak - https://hackcatml.tistory.com/115 | |
| SwiftLee 방식의 DI를 하는 것으로 TCA의 Environment 버킷 릴레이를 그만두고 싶은 이야기 - https://zenn.dev/yimajo/articles/e9f72549270873 | |
| Nest.js는 실제로 어떻게 의존성을 주입해줄까? - https://velog.io/@coalery/nest-injection-how | |
| # 1. use xcodebuild | |
| xcodebuild -scheme MyScheme -destination 'platform=iOS Simulator,OS=15.5,name=iPhone 13' -derivedDataPath '../dd' clean build |