我正在尝试使用heartRateVariabilitySDNN.我通过查询成功获取heartRate,并使用以下代码获取heartRateVariabilitySDNN但不知道它是如何工作的.此外,没有关于此查询或Apple示例代码的正确文档.
func createheartRateVariabilitySDNNStreamingQuery(_ workoutStartDate: Date) -> HKQuery? {
let typeHeart = HKQuantityType.quantityType(forIdentifier: .heartRateVariabilitySDNN)
let predicate: NSPredicate? = HKQuery.predicateForSamples(withStart: workoutStartDate, end: nil, options: HKQueryOptions.strictEndDate)
let squery = HKStatisticsQuery(quantityType: typeHeart!, quantitySamplePredicate: predicate, options: .discreteAverage, completionHandler: {(query: HKStatisticsQuery,result: HKStatistics?, error: Error?) -> Void in
DispatchQueue.main.async(execute: {() -> Void in
print("got: \(String(describing: result))")
})
})
return squery
}
Run Code Online (Sandbox Code Playgroud) 我正在探索WatchKit SDK.
当我有一个WatchKit应用程序时,是否可以从WatchKit应用程序上的iPhone应用程序设置值(例如文本,设置)?我可以从iPhone应用程序调用WatchKit应用程序扩展中的函数吗?
如果有人设法做到这一点,他/她可以发布一个例子吗?谢谢!
我的数据模型属性在我的表视图控制器中声明,并且 SwiftUI 视图以模态呈现。我想要提供的Form输入来操作数据模型。我在数据流中找到的资源只是在 SwiftUI 视图之间,而我在 UIKit 集成中找到的资源是在 SwiftUI 中嵌入 UIKit 而不是相反。
此外,对于值类型(在我的情况下是结构)数据模型是否有一种很好的方法,或者是否值得将其重新建模为一个类以便它是一个引用类型?
SwiftUI 警报和操作表采用布尔绑定,但我希望我的警报和操作表在模型属性为 时显示nil。模型属性是var servicePlayer: Player!,我希望在尚未选择网球发球运动员时显示警报或操作表 ( nil),但我不确定什么是解决此问题的好方法。
我的模型层由值类型组成struct,因此目前将属性标记为@Published不是一个选项。class将我的整个模型层重构为能够采用组合的引用类型听起来并不值得(我依赖于模型实例作为值类型副本来撤消和重做),但我可能是错的。
struct Match: Codable {
...
var servicePlayer: Player!
...
}
.alert(isPresented: $isPresented) {
Alert(title: Text("Who will serve?"),
primaryButton: .default(Text("You")) {
match.servicePlayer = .playerOne
},
secondaryButton: .default(Text("Opponent")) {
match.servicePlayer = .playerTwo
})
}
Run Code Online (Sandbox Code Playgroud)
绑定$isPresented只是一个占位符。从servicePlayer一开始nil,我们的想法是首先显示警报,但稍后在网球比赛中再次出现发球手nil但尚未选择时再次出现。
这是在 watchOS 4.3 beta (15T5165e) 和 Xcode 9.3 beta (9Q98q) 上,但我不认为这是因为它们处于测试阶段,因为另一个 WatchKit 项目在设备上运行得很好。我尝试取消配对/修复,重新启动 iPhone/Watch/macOS/Xcode(同时确保在手表上点击“信任这台电脑”),但 Xcode 在 WatchKit 方案中仍然显示“正在运行”,而没有实际安装和运行 watchOS应用程序,最终说“手表应用程序启动超时”。
我将此视图作为其父视图的工作表呈现
struct NamesView: View {
@Binding var match: Match
var body: some View {
...
}
}
Run Code Online (Sandbox Code Playgroud)
由于match事实来源位于呈现此NamesView工作表的父视图中,因此在构造视图时,我会$match按预期传入绑定和数据流。
但是,在预览提供程序中构造此视图时
struct NamesView_Previews: PreviewProvider {
static var previews: some View {
NamesView()
}
}
Run Code Online (Sandbox Code Playgroud)
编译器表示NamesView()需要一个match类型的参数Binding<Match>(Match作为将此视图呈现为工作表的父视图)。我不确定从这里开始的好方法是什么,或者这是否是 SwiftUI 的限制。
以前对于表视图,这是在UITableViewDataSource委托回调中完成的tableView(_:commit:forRowAt:)。与新集合视图关联的 API 中是否有等效功能,或者推荐的实现方法?
uikit ios uicollectionview uicollectionviewcompositionallayout
我有一个应用程序,它将在五个不同的设备上生产,使用相互交谈MultipeerConnectivity.我有一个bash脚本,可以在五个不同的模拟器上启动应用程序.这很好用,但是我每次都要点击每个设备来测试所有内容.
所以我想也许XCUITest可以帮助自动执行此操作,并删除这些外部bash脚本依赖项(希望在Xcode/Swift中执行所有操作).我试过这样一个天真的方法:
func testExample() {
// Use recording to get started writing UI tests.
// Use XCTAssert and related functions to verify your tests produce the correct results.
let app1 = XCUIApplication(bundleIdentifier: "com.madebymist.qdb-ios")
let app2 = XCUIApplication(bundleIdentifier: "com.madebymist.qdb-ios")
app1.launch()
app1.buttons["Select Group"].tap()
app1.sheets.buttons["Group one"].tap()
app1.buttons["Host"].tap()
// Launch and test App 2
app2.launch()
app2.buttons["Select Group"].tap()
app2.sheets.buttons["Group one"].tap()
app2.buttons["Join"].tap()
}
Run Code Online (Sandbox Code Playgroud)
但是,这只是在同一个模拟器中逐个推出应用程序.
那么,有没有办法在多个模拟器设备上同时实现XCUITest?(最好在Xcode/Swift中,但其他选项也可以使用).
我dyld: Symbol not found: _OBJC_CLASS_$_CLKFullColorImageProvider在 watchOS 4 中遇到这个错误,但在 watchOS 5 中没有,我相信它与我下面的复杂代码有关,但不知道为什么......据我所知编译器不应该CLKFullColorImageProvider像我一样寻找已经阻止了if #available(watchOSApplicationExtension 5.0, *)
class Complication: NSObject, CLKComplicationDataSource {
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {
if #available(watchOSApplicationExtension 5.0, *) {
if complication.family == .circularSmall {
let template = CLKComplicationTemplateCircularSmallRingImage()
guard let image = UIImage(named: "Circular") else { handler(nil); return}
template.imageProvider = CLKImageProvider(onePieceImage: image)
let timelineEntry = CLKComplicationTimelineEntry(date: Date(), complicationTemplate: template)
handler(timelineEntry)
} else if complication.family == .utilitarianSmall {
let template …Run Code Online (Sandbox Code Playgroud)