fix(skills): improve code examples in iOS 26 skills

- Add do-catch error handling to SwiftUI streaming example in
  foundation-models-on-device
- Add Auto Layout constraints to UIKit glass effect example in
  liquid-glass-design
- Promote build settings prerequisite from code comment to visible
  blockquote warning in swift-concurrency-6-2
This commit is contained in:
Okmin
2026-02-24 14:39:25 +09:00
parent 1e79991407
commit 300b6715f9
3 changed files with 27 additions and 6 deletions

View File

@@ -178,6 +178,7 @@ for try await partial in stream {
```swift ```swift
@State private var partialResult: TripIdeas.PartiallyGenerated? @State private var partialResult: TripIdeas.PartiallyGenerated?
@State private var errorMessage: String?
var body: some View { var body: some View {
List { List {
@@ -185,10 +186,17 @@ var body: some View {
Text(idea) Text(idea)
} }
} }
.overlay {
if let errorMessage { Text(errorMessage).foregroundStyle(.red) }
}
.task { .task {
let stream = session.streamResponse(to: prompt, generating: TripIdeas.self) do {
for try await partial in stream { let stream = session.streamResponse(to: prompt, generating: TripIdeas.self)
partialResult = partial for try await partial in stream {
partialResult = partial
}
} catch {
errorMessage = error.localizedDescription
} }
} }
} }

View File

@@ -138,13 +138,27 @@ glassEffect.tintColor = UIColor.systemBlue.withAlphaComponent(0.3)
glassEffect.isInteractive = true glassEffect.isInteractive = true
let visualEffectView = UIVisualEffectView(effect: glassEffect) let visualEffectView = UIVisualEffectView(effect: glassEffect)
visualEffectView.translatesAutoresizingMaskIntoConstraints = false
visualEffectView.layer.cornerRadius = 20 visualEffectView.layer.cornerRadius = 20
visualEffectView.clipsToBounds = true visualEffectView.clipsToBounds = true
view.addSubview(visualEffectView)
NSLayoutConstraint.activate([
visualEffectView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
visualEffectView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
visualEffectView.widthAnchor.constraint(equalToConstant: 200),
visualEffectView.heightAnchor.constraint(equalToConstant: 120)
])
// Add content to contentView // Add content to contentView
let label = UILabel() let label = UILabel()
label.text = "Liquid Glass" label.text = "Liquid Glass"
label.translatesAutoresizingMaskIntoConstraints = false
visualEffectView.contentView.addSubview(label) visualEffectView.contentView.addSubview(label)
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: visualEffectView.contentView.centerXAnchor),
label.centerYAnchor.constraint(equalTo: visualEffectView.contentView.centerYAnchor)
])
``` ```
### UIGlassContainerEffect for Multiple Elements ### UIGlassContainerEffect for Multiple Elements

View File

@@ -136,10 +136,9 @@ This mode is opt-in and recommended for apps, scripts, and other executable targ
When you need actual parallelism, explicitly offload with `@concurrent`: When you need actual parallelism, explicitly offload with `@concurrent`:
> **Important:** This example requires Approachable Concurrency build settings — SE-0466 (MainActor default isolation) and SE-0461 (NonisolatedNonsendingByDefault). With these enabled, `extractSticker` stays on the caller's actor, making mutable state access safe. **Without these settings, this code has a data race** — the compiler will flag it.
```swift ```swift
// Assumes Approachable Concurrency build settings are enabled:
// SE-0466 (MainActor default isolation) and SE-0461 (NonisolatedNonsendingByDefault).
// Safe mutation of cachedStickers via await depends on these compiler options.
nonisolated final class PhotoProcessor { nonisolated final class PhotoProcessor {
private var cachedStickers: [String: Sticker] = [:] private var cachedStickers: [String: Sticker] = [:]