小编Igo*_* R.的帖子

在 iOS 14 小部件中显示 Core Data 数据的合理方式是什么?

我有一个使用 Core Data + CloudKit 堆栈的应用程序。(核心数据在设备之间同步。)。现在我想在 iOS 14 小部件中显示来自 Core Data 的数据(在 WidgetKit 目标中查看)。

\n

我的目标是让小部件中的数据也是来自核心数据的实际数据:即 \xe2\x80\x94 用户更改了设备 A 上的记录,稍后在设备 B(带有小部件)上更改了小部件中表示的记录。

\n

我应该怎么做:

\n

a)为主应用程序目标和小部件目标添加应用程序组功能;并在小部件目标中获取核心数据。
\nb) 在主应用程序目标中获取核心数据,保存到文件(plist?、JSON?),然后在小部件中使用该文件。
\nc)在主应用程序目标中获取核心数据,从小部件目标中获取该数据。(是否可以?)

\n

什么才是最合理的方式呢?感谢您的任何建议。

\n

core-data ios swift cloudkit widgetkit

6
推荐指数
0
解决办法
1218
查看次数

如何在 watchOS 7 上的 SwiftUI 中更改模式表视图中的“取消”按钮文本?

我有两个简单的观点:

import SwiftUI

struct ContentView: View {
    @State private var showingModalView = false
    
    var body: some View {
        Button(action: {
            self.showingModalView.toggle()
        }) {
            Text("Show Modal View")
        }.sheet(isPresented: $showingModalView) {
            ModalView()
        }
    }
}

struct ModalView: View {
    var body: some View {
        Text("Modal View")
    }
}
Run Code Online (Sandbox Code Playgroud)

当“显示模态”按钮按下时,ModalView显示。

如何在活动时将文本“取消”更改ModalView为其他内容?

在此处输入图片说明

ios swift watchkit swiftui

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

当 CloudKit 中的核心数据发生变化时,如何调用 WidgetCenter.shared.reloadAllTimelines()?

我有一个使用 Core Data 和 CloudKit 的应用程序。更改在设备之间同步。主要目标有后台模式功能,检查Remote notificationsiCloud 功能,服务设置为 CloudKit,并检查容器中的正确容器。

我如何在代码中对记录的更改、删除和添加做出反应?我需要WidgetCenter.shared.reloadAllTimelines()在 CloudKit 中的核心数据更改以更新 iOS 14 主屏幕小部件时调用。

我的目标是让这个工作:我在 icloud.developer.apple.com 或其他设备上更改/添加/删除记录,并WidgetCenter.shared.reloadAllTimelines()调用以在小部件中显示正确的数据。应用程序可能在后台或前台。

来自AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Register for Remote Notifications
    application.registerForRemoteNotifications()
    
    return true
}
Run Code Online (Sandbox Code Playgroud)

此外,在输出日志中注意到消息:

CoreData: debug: CoreData+CloudKit: -[NSCloudKitMirroringDelegate remoteStoreDidChange:]_block_invoke(2138): <NSCloudKitMirroringDelegate: 0x281818d00> - 忽略远程更改通知,因为导出器已经赶上了这个事务:64 / 64 - <NSCloudKitMirroringDelegate: 0x281818d00>网址:file:///var/mobile/Containers/Data/Application/F83C68DA-7C36-42CC-926D-7C721C679579/Library/Application%20Support/AppTitle.sqlite)

core-data swift cloudkit widgetkit swiftui

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

如何确保 WidgetKit 视图显示 @FetchRequest 的正确结果?

我有一个将 Core Data 与 CloudKit 结合使用的应用程序。更改在设备之间同步。主要目标具有后台模式功能,并带有选中的远程通知。主目标和小部件目标都具有相同的应用程序组,并且都具有 iCloud 功能,服务设置为 CloudKit,并且检查了容器中的相同容器。

我的目标是在 SwiftUI WidgetKit 视图中显示实际的核心数据条目。

我的小部件目标文件:

import WidgetKit
import SwiftUI
import CoreData

// MARK: For Core Data

public extension URL {
    /// Returns a URL for the given app group and database pointing to the sqlite database.
    static func storeURL(for appGroup: String, databaseName: String) -> URL {
        guard let fileContainer = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup) else {
            fatalError("Shared file container could not be created.")
        }
        
        return fileContainer.appendingPathComponent("\(databaseName).sqlite")
    }
}

var managedObjectContext: NSManagedObjectContext …
Run Code Online (Sandbox Code Playgroud)

core-data ios swift widgetkit swiftui

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

标签 统计

swift ×4

core-data ×3

ios ×3

swiftui ×3

widgetkit ×3

cloudkit ×2

watchkit ×1