在本教程中使用了漂亮的代码!有一些更正。语音识别代码正在工作。但是如果我触发识别码两次以上,就会弹出标题中的错误。很难找到解决这个问题的文档。任何人?
private func recordAndRecognizeSpeech()
{
let node = audioEngine.inputNode
let recordingFormat = node.outputFormat(forBus: 0)
node.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { buffer, _ in
self.request.append(buffer)
}
audioEngine.prepare()
do {
try audioEngine.start()
}
catch {
self.sendAlert(message: "There has been an audio engine error.")
return print (error)
}
guard let myRecognizer = SFSpeechRecognizer() else
{
self.sendAlert(message: "Speech recognition is not supported for your current locale.")
return
}
if !myRecognizer.isAvailable
{
self.sendAlert(message: "Speech recognition is not currently available. Check back at …
Run Code Online (Sandbox Code Playgroud) 我需要从深层细节视图弹出到根视图。虽然以下使用 isDetailList 和 isActive 的解决方案适用于 iOS,但它不适用于 watchOS。isDetailList 命令在 watchOS 中不可用。
import SwiftUI
class AppState : ObservableObject {
@Published var showState : Bool = false
}
struct MoreTests: View {
@EnvironmentObject var appState : AppState // injected from SceneDelegate
var body: some View {
NavigationView {
NavigationLink(
destination: MoreView1(),
isActive: $appState.showState, // required to work
label: { Text("Go to MoreView1") }
).isDetailLink(false) // required to work
}.navigationBarTitle("Root")
}
}
struct MoreView1: View {
var body: some View {
NavigationLink(
destination: MoreView2(), …
Run Code Online (Sandbox Code Playgroud) 有人在 WatchKit + CoreData + CloudKit 上遇到过这个错误吗?
CoreData:调试:CoreData + CloudKit:-[PFCloudKitMetadataModelMigratorcalculateMigrationStepsWithConnection:错误:](404):跳过“ANSCKDATABASEMETADATA”的迁移,因为它已经有一个名为“ZLASTFETCHDATE”的列
请注意,该应用程序可以运行,并且我在模拟器或真实手表上运行该应用程序时没有遇到任何问题。其中有 9 个“错误”。
我认为这与下面持久容器的设置方式有关。
description.setOption(true as NSObject, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey)
...
container.viewContext.automaticallyMergesChangesFromParent = true // bring all iCloud changes into app
container.viewContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy // iCloud wins, local memory loses
Run Code Online (Sandbox Code Playgroud) 我不明白 SwiftUI 和 DispatchQueues 如何工作的问题。这是代码。
这有效并将继续每秒刷新计数器状态变量。
// Example 1 - This works
struct TimerButtonTest : View {
@State var counter: Int = 0
var body: some View {
start()
return VStack { Text("\(counter)") }
}
func start() {
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(1000)) {
self.counter += 1
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不。按下按钮后,计数器增加 1(1 秒后)但停止。
// Example 2 - This does not work
struct TimerButtonTest : View {
@State var counter: Int = 0
var body: some View {
return Button(action: {self.start()}, label: …
Run Code Online (Sandbox Code Playgroud) 可以使用Swift将字符串大写
let str = "Hello World!"
print(str.uppercased())
Run Code Online (Sandbox Code Playgroud)
此代码将显示“ HELLO WORLD!”。进入Xcode控制台。但是,如何使用SwiftUI大写如下所示的String呢?
Text("Hello World!")
Run Code Online (Sandbox Code Playgroud) 创建自定义环境键有效,但如果我希望在视图中设置该值,XCODE 不允许这样做。但是可以设置预定义的环境值。我究竟做错了什么?
struct ResetDefault: EnvironmentKey {
static var defaultValue: Bool = false
}
extension EnvironmentValues {
var resetDefault: Bool {
get { self[ResetDefault.self] }
set { self[ResetDefault.self] = newValue }
}
}
struct ResetView: View {
@Environment(\.resetDefault) var reset
var body: some View {
Text("Reset").onAppear() {
reset = true. // Cannot assign to property: 'reset' is a get-only property
}
}
}
Run Code Online (Sandbox Code Playgroud)