From f0464560d820371e678c8a032e546ff7f14862d5 Mon Sep 17 00:00:00 2001 From: Jack-sh1 Date: Fri, 3 Apr 2026 22:08:17 +0800 Subject: [PATCH] Fix Swift 6 concurrency warnings and retroactive conformance (#199) - Mark MKLocalSearchCompleterDelegate methods as nonisolated in LocalSearchController to satisfy nonisolated protocol requirement, dispatching back to @MainActor where needed - Add @retroactive attribute to CLLocationCoordinate2D's Identifiable conformance with backward compatibility for Swift < 5.10 --- ControlRoom/Controllers/LocalSearchController.swift | 11 ++++++----- .../CLLocationCoordinate2D-Identifiable.swift | 8 ++++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ControlRoom/Controllers/LocalSearchController.swift b/ControlRoom/Controllers/LocalSearchController.swift index d00dac5..2bffa65 100644 --- a/ControlRoom/Controllers/LocalSearchController.swift +++ b/ControlRoom/Controllers/LocalSearchController.swift @@ -115,16 +115,17 @@ class LocalSearchController: NSObject, ObservableObject { /// Adds `MKLocalSearchCompleterDelegate` conformance so the controller can use the delegate's callback methods extension LocalSearchController: MKLocalSearchCompleterDelegate { /// Called if `MKLocalSearchCompleter` return valid results from a query string - func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) { - guard let callback else { return } + nonisolated func completerDidUpdateResults(_ completer: MKLocalSearchCompleter) { let results = completer.results.map { - LocalSearchResult( result: $0 ) + LocalSearchResult(result: $0) + } + Task { @MainActor [weak self] in + self?.callback?(results) } - callback(results) } /// Called if `MKLocalSearchCompleter` encounters an error - func completer(_ completer: MKLocalSearchCompleter, didFailWithError error: Error) { + nonisolated func completer(_ completer: MKLocalSearchCompleter, didFailWithError error: Error) { print(error) } } diff --git a/ControlRoom/Extensions/CLLocationCoordinate2D-Identifiable.swift b/ControlRoom/Extensions/CLLocationCoordinate2D-Identifiable.swift index 4e18f7f..5c213e2 100644 --- a/ControlRoom/Extensions/CLLocationCoordinate2D-Identifiable.swift +++ b/ControlRoom/Extensions/CLLocationCoordinate2D-Identifiable.swift @@ -9,8 +9,16 @@ import CoreLocation import Foundation +#if swift(>=5.10) +extension CLLocationCoordinate2D: @retroactive Identifiable { + public var id: String { + "\(latitude)-\(longitude)" + } +} +#else extension CLLocationCoordinate2D: Identifiable { public var id: String { "\(latitude)-\(longitude)" } } +#endif \ No newline at end of file