Skip to content

Instantly share code, notes, and snippets.

View benigumocom's full-sized avatar
🏠
🙆

chanzmao benigumocom

🏠
🙆
View GitHub Profile
import SwiftUI
import SwiftData
struct PreviewOneModelView<Model: PersistentModel, Content: View>: View {
var content: (Model) -> Content
var body: some View {
PreviewOneModelContent(content: content)
.modelContainer(for: Item.self)
//.modelContainer(for: [Item.self], inMemory: false) // OK
@benigumocom
benigumocom / TextField.swift
Last active July 23, 2024 09:26
【SwiftUI】TextField サンプルコード 👉 https://android.benigumo.com/20240723/swiftui-textfield/
import SwiftUI
// 【SwiftUI】TextField の角を丸くして背景色を付けるもっとも簡単な方法は
// https://android.benigumo.com/20240507/rounded-text-field/
struct TestTextField: View {
@State private var text = ""
// style
// background
@benigumocom
benigumocom / BackgroundModelActor.swift
Last active July 17, 2024 13:37
【SwiftData】バックグラウンドで @Modelactor を singleton で使う 👉 https://android.benigumo.com/20240717/background-modelactor/
import SwiftUI
import SwiftData
// https://forums.developer.apple.com/forums/thread/736226
struct TestModelActorView: View {
@Environment(\.modelContext) private var modelContext
// private var dataSource: DataSource {
@benigumocom
benigumocom / LocalData.swift
Last active July 12, 2024 05:54
【Swift】Apple 公式サンプル にみる @Modelactor を singleton にして ViewModifier にすると便利 👉 https://android.benigumo.com/20240711/modelactor-singleton/
import SwiftUI
import SwiftData
@ModelActor
actor LocalData {
nonisolated(unsafe) private(set) static var shared: LocalData! // *
private var task: Task<Void, Never>?
static func createInstance(modelContainer: ModelContainer) { // *
@benigumocom
benigumocom / TestView.swift
Last active July 13, 2024 08:39
【Swift】URLSession で Passing argument of non-sendable type '(any URLSessionTaskDelegate)?' outside of main actor-isolated context may introduce data races 👉 https://android.benigumo.com/20240709/swift-concurrency/
import SwiftUI
struct TestView: View {
@State private var text = "-"
private let url = URL(string: "https://wttr.in/?format=3")!
//private let url = URL(string: "https://httpbin.org/get")!
var body: some View {
Text(text)
.task {
@benigumocom
benigumocom / TestObservable.swift
Last active July 6, 2024 12:24
【Swift6 Concurrency】 新しい @observable クラスの書き方を知らないやつwww 👉 https://android.benigumo.com/20240706/swift6-observable/
import SwiftUI
struct TestObservable: View {
private var requester = Requester()
var body: some View {
VStack {
Text("\(requester.responseCode)")
Text("\(requester.responseBody)")
}
@benigumocom
benigumocom / LargeData.swift
Last active July 2, 2024 09:51
【SwiftUI】ScrollView + LazyVStack vs Large amounts of data 👉 https://android.benigumo.com/20240627/scrollview-lazyvstack-vs-large-amounts-of-data/
import SwiftUI
import SwiftData
@MainActor @Observable
final class LargeData {
var loadedItems: [Item] = []
var count = 0
private var modelContext: ModelContext!
private var predicate: Predicate<Item>!
import SwiftUI
import SwiftData
@Model
final class Item {
var i: Int
var s: String
init(i: Int, s: String) {
self.i = i
@benigumocom
benigumocom / sample-URLSession.swift
Last active June 13, 2024 04:38
【Swift】URLSession メソッドの使い分け 👉 https://android.benigumo.com/20240613/urlsession/
let url = URL(string: "https://httpbin.org/anything/{anything}")!
let session = URLSession.shared
Task {
let (data, response) = try await URLSession.shared.data(from: url)
print((response as! HTTPURLResponse).statusCode)
print(String(data: data, encoding: .utf8)!)
// 200
@benigumocom
benigumocom / convert_encoding.swift
Last active June 10, 2024 16:55
【Swift】 文字コードの変換 を整理してみた 👉 https://android.benigumo.com/20240611/encoding/
// with:
// FileManageExtensions.swift
// https://gist.github.com/benigumocom/6a8e4506438b5260469c12b1c12c0fb7
do {
let documents = URL.documentsDirectory
let text = "あいうえお"
// convert to data bytes
print(