相关疑难解决方法(0)

在 iOS 14 的 SwiftUI 中的主应用程序和小部件之间共享数据

@main
struct ClockWidgetExt: Widget {
    private let kind: String = "ClockWidgetExt"
    
    public var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider(), placeholder: PlaceholderView()) { entry in
            HomeTestView()
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从我的主应用程序获取数据到小部件?

widget swift widgetkit swiftui ios14

14
推荐指数
1
解决办法
6349
查看次数

从 iOS 14 小部件的 CoreData 获取数据

我想在小部件中显示从 Core Data 获取的数据。但@FetchRequest不适用于小部件。

据我了解,我们必须创建一个应用程序组并创建一个共享的持久容器。

我想知道的是如何从共享的持久容器中读取(获取)小部件上的数据,或者简单地说,如何在小部件中显示从 Core Data 获取的数据

core-data swift widgetkit swiftui ios14

9
推荐指数
1
解决办法
4175
查看次数

在 MVVM 应用程序中访问核心数据堆栈

我正在使用该MVVM模式编写应用程序。我想知道如何创建CoreData堆栈,以便可以从我的应用程序的各个位置访问它。

第一种方法是在 中创建一个持久性容器AppDelegate,然后将此服务注入我的 ViewModel(同时将其managedObjectContext作为环境变量传递给我的视图)。

然而,通过这种方式,访问整个应用程序的上下文更加困难:例如,在解码网络响应时,因为他们无法访问managedObjectContext

protocol APIResource {
    associatedtype Response: Decodable
    ...
}

extension APIResource {
    func decode(_ data: Data) -> AnyPublisher<Response, APIError> {
        Just(data)
            // how can I access context here to pass it to JSONDecoder?
            .decode(type: Response.self, decoder: JSONDecoder())
            .mapError { error in
                .parsing(description: error.localizedDescription)
            }
            .eraseToAnyPublisher()
    }
}
Run Code Online (Sandbox Code Playgroud)

我见过的另一个解决方案是使用单例。我可以从项目的任何地方访问它,但如何以正确的方式创建它?

如果我不想同时修改队列和后台队列中的某个对象怎么办?或者如果两个队列都想修改同一个对象怎么办?

singleton core-data ios swift

3
推荐指数
1
解决办法
1744
查看次数

标签 统计

swift ×3

core-data ×2

ios14 ×2

swiftui ×2

widgetkit ×2

ios ×1

singleton ×1

widget ×1