小编Cod*_*ght的帖子

SwiftUI - 确保在模型更新时从主线程发布值(通过像 receive(on:) 这样的运算符)

我的应用程序包含一个资源密集型操作,该操作根据从 XML 提要中提取的数据填充数组。我不希望此操作锁定主线程(以及为数组提供新数据时的 UI),因此它是在后台完成的。

let dispatchQueue = DispatchQueue(label: "concurrent.queue", qos: .utility, attributes: .concurrent)

class XMLHandler: ObservableObject {
    let context: NSManagedObjectContext

    @Published var myArray: [CustomObject] = []

    init(context: NSManagedObjectContext) {
        self.context = context
    }
    
    ...some code...
    
    func populateArray {
      dispatchQueue.async {
       ...xml parsing happens...
       (xmlOutputObject) in 
          for x in xmlOutputObject {
              self.myArray.append(x)
          }
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

在其他地方,我的 SwiftUI 视图使用 myArray 来填充它的列表:

struct MyView: View {

 @EnvironmentObject var handler: XMLHandler
    var body: some View {
            List{
                ForEach(handler.myArray) { CustomObject in
              ... generate …
Run Code Online (Sandbox Code Playgroud)

swiftui combine

31
推荐指数
4
解决办法
4万
查看次数

SwiftUI - 动态刷新 UINavigationBar.appearance().backgroundColor

我正在尝试在我的应用程序中实现颜色主题选择器。我试图克服的最后一个障碍是动态更改 UINavigationBar 的颜色。目前,我的更改颜色的功能确实有效,但只有当应用程序从关闭状态重新启动时才会生效。

我的根视图控制器设置 UINavigationBar 的初始状态,如下所示:

struct MyRootView: View {

            init() {
                UINavigationBar.appearance().backgroundColor = getPreferredThemeColour() 
                UINavigationBar.appearance().largeTitleTextAttributes = [
                    .foregroundColor: UIColor.white]
            }

var body: some View {
...
Run Code Online (Sandbox Code Playgroud)

getPreferredThemeColour() 只是从 UserDefaults 返回所需的 UIColour

我的主题选择器具有可以更改颜色属性的按钮,如下所示:

 Button(action: {
 UserDefaults.standard.set(UIColor.blue, forKey: "theme")
 UINavigationBar.appearance().backgroundColor = UIColor.blue }) {
Run Code Online (Sandbox Code Playgroud)

我似乎找不到任何方法来“即时”刷​​新 UINavigationBar 以反映所做的更改。该应用程序始终需要重新启动。

任何帮助将不胜感激!谢谢。

ios swiftui

4
推荐指数
1
解决办法
1253
查看次数

Swift:种子核心数据数据模型的最简单方法

我正在开发一个简单的iOS 9应用程序(使用Swift和Xcode 7.01),它使用Timehop​​样式界面显示与当天相对应的数据,可以追溯到X年.

我想在第一个运行时播种我的CoreData模型,在第一个运行时(或稍后在用户首选项中更改)基于用户选择的选项使用特定数据填充它.但是,我希望导入整个数据源,以便在更改用户首选项时可以使用不同的数据

我要迁移到CoreData的当前数据源目前是CSV格式.我的问题是,用于导入/播种到CoreData的最简单的文件格式是什么,执行这样的任务时是否有任何最佳实践,并且是否有正确的方向我可以进行实施?

core-data ios swift

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

标签 统计

ios ×2

swiftui ×2

combine ×1

core-data ×1

swift ×1