标签: watchos-6

在watchOS中使用environmentObject

我正在尝试environmentObject在watchOS6应用中使用,以将我的数据模型绑定到我的视图。

我已经在Xcode 11中创建了一个简单的独立Watch应用程序。

我创建了一个新DataModel

import Combine
import Foundation
import SwiftUI

final class DataModel: BindableObject {

    let didChange = PassthroughSubject<DataModel,Never>()

    var aString: String = "" {
        didSet {
            didChange.send(self)
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

在我的ContentView结构中,我使用@EnvironmentObject- 绑定此类

struct ContentView : View {

    @EnvironmentObject private var dataModel: DataModel

    var body: some View {
        Text($dataModel.aString.value)
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,我尝试将类的实例注入DataModel到环境中HostingController-

class HostingController : WKHostingController<ContentView> {
    override var body: ContentView {
        return ContentView().environmentObject(DataModel())
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个错误:

Cannot …
Run Code Online (Sandbox Code Playgroud)

swift apple-watch watchos swiftui watchos-6

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

在 watchOS 上使用 CloudKit 的 CoreData 不同步

我已经设法让 CoreData 与 CloudKit 一起使用我的应用程序的 iOS 版本上的新 NSPersistentCloudKitContainer 并让它在应用程序运行时自动同步。但是,当我在 watchOS 应用程序上进行设置时,我注意到只有在我强制关闭并重新打开手表应用程序时才会发生同步。

import Foundation
import CoreData

class DataManager : NSObject {
    static let shared = DataManager()

    #if os(watchOS)
    let transactionAuthorName = "watchOSApp"
    #else
    let transactionAuthorName = "iOSApp"
    #endif

    override private init() {
        super.init()
    }

    lazy var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentCloudKitContainer(name: "Model")

        let cloudStoreUrl = applicationDocumentDirectory()!.appendingPathComponent("product.sqlite")

        let cloudStoreDescription = NSPersistentStoreDescription(url: cloudStoreUrl)
        cloudStoreDescription.shouldInferMappingModelAutomatically = true
        cloudStoreDescription.shouldMigrateStoreAutomatically = true
        cloudStoreDescription.cloudKitContainerOptions = NSPersistentCloudKitContainerOptions(containerIdentifier:"iCloud.com.company.product")

        container.persistentStoreDescriptions = [cloudStoreDescription]

        container.loadPersistentStores(completionHandler: { storeDescription, error in …
Run Code Online (Sandbox Code Playgroud)

core-data ios cloudkit watchos-6 nspersistentcloudkitcontainer

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

WatchKit 扩展 [31646:1403662] libMobileGestalt 实用程序.c:421:未找到密钥 1129072723 的值

有谁知道在手表上运行模拟时可以从 Xcode 中找到有关此错误的信息

WatchKit 扩展 [31646:1403662] libMobileGestalt 实用程序.c:421:未找到密钥 1129072723 的值

每次我第一次启动应用程序时都会发生这种情况。我希望它与我的代码无关,而与模拟器有关。

我目前使用 Xcode 版本 11.1 (11A1027)

xcode apple-watch watchos-6

10
推荐指数
0
解决办法
273
查看次数

SwiftUI 中 watchOS 的 NavigationBarTitle 颜色更改

在此处输入图片说明

在上图中,id 喜欢更改-02:49为一种颜色,例如Color.blue

我试过了:

struct ContentView: View {

    var body: some View {
        PlayerView().accentColor(Color.blue)

    }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试将它添加到实际的 PlayerView 中,如下所示:

struct PlayerView: View {

    var body: some View {
        VStack{
            .... 

        }.navigationBarTitle(Text(“-2:49”))
         .accentColor(.blue)

    }

}
Run Code Online (Sandbox Code Playgroud)

我也试过:

   struct PlayerView: View {

    var body: some View {
        VStack{
            .... 

        }.navigationBarTitle(Text(“-2:49”).foregroundColor(.blue))

    }

}
Run Code Online (Sandbox Code Playgroud)

xcode navigationbar swiftui watchos-6

7
推荐指数
3
解决办法
2129
查看次数

如何在后台运行连接到BLE外设的watchOS应用程序?

我正在创建一个 watchOS 应用程序。应用程序应连接到 BLE 标签,该标签将距离值发送到 Apple Watch。如果距离低于给定值,应用程序应就此向用户提供一些反馈。

阅读有关核心蓝牙和后台任务的信息,这似乎是不可能的。如果我是正确的,当应用程序暂停时,它将不再从 BLE 外设接收数据。我应该如何完成这项任务?这样的应用程序可以在后台运行 8 小时吗?我找不到更多关于这方面的信息,这似乎是不可能的。

bluetooth-lowenergy watchos watchos-6

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

watchOS 6 和 iOS 13 NSUserActivity Handoff 不工作

自从更新到 iOS 13 和 watchOS 6 后,我无法让我构建的任何应用程序的 Handoff 功能从 Apple Watch 运行到 iPhone。该功能以前适用于我现有的自定义构建的应用程序,但自操作系统更新后不再起作用。我可以确认在 Apple Watch 和 iPhone 上支持 Handoff 的 Apple 本地应用程序工作正常,因此我排除了任何 iCloud 登录/帐户问题。为了帮助解决和隔离问题,我最终构建了一个演示 iOS 和 watchOS 应用程序来测试 Handoff 功能。我确保在 NSUserActivityTypes 下的 iOS 应用程序的 info.plist 中包含用户活动,并且我使用相同的开发人员团队 ID。我也在使用最新的 Xcode 版本 11.2.1。当下面的 WKInterfaceController 可见时,Handoff 图标应该出现在我 iPhone 上的 App Switcher 中,但它没有出现。更新后我错过了什么吗?谢谢。

这是我的 WatchKit 代码。

import WatchKit
import Foundation

class InterfaceController: WKInterfaceController {

    var userActivity: NSUserActivity?
    
    override func awake(withContext context: Any?) {
        super.awake(withContext: context)
        
        // Configure interface objects here.
        userActivity = NSUserActivity(activityType: "HandoffDemo.Handoff")
        userActivity?.title …
Run Code Online (Sandbox Code Playgroud)

ios handoff nsuseractivity watchos-6 xcode11.2

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

覆盖 Apple Watch 模拟器的状态栏显示时间(使用 xcrun simctl status_bar)

我需要覆盖 Apple Watch 模拟器的状态栏显示时间,这样我就可以截取时间的屏幕截图 - 10:09。我在终端中使用此命令来执行此操作,但它没有按预期工作。不过该命令对于 iOS 模拟器来说效果很好。

xcrun simctl status_bar "Apple Watch Series 5 - 44mm" override --time "10:09"
Run Code Online (Sandbox Code Playgroud)

我确实有一个具有该名称的模拟器(Apple Watch Series 5 - 44mm)正在运行。

如何覆盖 Apple Watch 模拟器的时间?

模拟器版本:版本11.3.1(SimulatorApp-912.5.1 SimulatorKit-570.3 CoreSimulator-681.17.2)

simulator apple-watch watchkit watchos watchos-6

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

无法在 SwiftUI、WatchOS 上使用 TabView

有没有办法在 WatchOS 上使用 SwiftUI 使用 TabView?

我看过大部分 WWDC 的演讲,但他们没有提到 WatchOS。此外,在苹果文档中,它没有在 SDK 下枚举。

每当我尝试将它添加到 WatchOS 项目时,我都会收到以下错误:

'TabView' is unavailable in watchOS

或者是否有复制所需 TabView 的好方法?

我想要类似的东西: 在此处输入图片说明 只需水平滑动即可更改的两个不同页面。

xcode swift swiftui watchos-6

5
推荐指数
2
解决办法
1571
查看次数

在独立的 watchOS 应用程序上实现 Core Data

据我所知,我们可以在 Apple Watch 应用上使用 Core Data。因此,独立的 watchOS 应用程序可以拥有自己的持久存储。但是当我们为 watchOS 应用程序创建项目时,没有选择使用核心数据(就像我们为 iOS 应用程序创建项目时一样)

那么,如何在独立的watchOS应用上实现Core Data呢?

我已从 iOS 应用程序(使用 Core Data)复制此代码并将其粘贴到ExtensionDelegate我的独立 SwiftUI watchOS 应用程序中

 // MARK: - Core Data stack

    lazy var persistentContainer: NSPersistentContainer = {
        /*
         The persistent container for the application. This implementation
         creates and returns a container, having loaded the store for the
         application to it. This property is optional since there are legitimate
         error conditions that could cause the creation of the store to fail.
        */ …
Run Code Online (Sandbox Code Playgroud)

core-data watchkit swiftui watchos-6

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

在 WatchOS 上的 SwiftUI 中使用多个托管控制器

WKHostingController我正在尝试在 SwiftUI WatchOS 项目中使用多个。

我希望能够从 1 个控制器变为 3 个控制器。

在此输入图像描述

用户将按下第一个按钮ContentView(1)(与 配对HostingController(1)),然后将其导航到 3 组集中的中间控制器HC3(或HostingController3,带有标识符HC3

代码如下:

struct ContentView: View {
    var body: some View {
        VStack{
            NavigationLink(destinationName: "HC3"){
                Text("Go to other wk")
            }
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

主机控制器:

class HostingController: WKHostingController<AnyView> {
    override var body: AnyView {
        return AnyView(ContentView())
    }
}
Run Code Online (Sandbox Code Playgroud)

这确实带我到HC3但我无法导航到HC2HC4创建用户可以在HC2HC3和之间滚动的多个页面视图HC4。HostingController 2-4 都有与上面类似的 HostingController 和 ContentView。

我还确定了HC2和 …

swift apple-watch watchos swiftui watchos-6

5
推荐指数
0
解决办法
759
查看次数