我有一个核心数据模型,其中一个实体生成到 class 中Task。我正在尝试objectWillChange从NSManagedObject发送(自动,无需手动工作)中获取合并发布者,但它不会。任务实体有一个name属性。
let task = Task(context: container.viewContext)
let taskSubscription = task.objectWillChange.sink(receiveValue: { _ in
print("Task changed")
})
task.name = "Foo" // WILL NOT trigger
Run Code Online (Sandbox Code Playgroud)
如果我手动调用发送,订阅将起作用:
task.objectWillChange.send() // Will trigger
Run Code Online (Sandbox Code Playgroud)
如果我用一个 simple 替换ObservableObject它,它将按预期工作:
class DummyTask: ObservableObject {
@Published var name: String?
}
Run Code Online (Sandbox Code Playgroud)
let dummy = DummyTask()
let dummySubscription = dummy.objectWillChange.sink(receiveValue: { _ in
print("Dummy changed")
})
dummy.name = "Foo" // Will trigger
dummy.objectWillChange.send() // Will trigger
Run Code Online (Sandbox Code Playgroud)
NSManagedObject 被窃听了吗?我应该如何观察通用实体对象的变化?我应该如何让 SwiftUI 看到它们? …
我正在使用 Audiokit 来满足我的 iOS 应用程序的音频需求,我需要使用音序器以编程方式控制一系列音符,并且我想用它来驱动采样器。Audiokit 似乎被设计为在内部使用 MIDI,但我想避免这种情况并直接从音序器转到采样器,因为使用 MIDI 似乎使所有内部连接都出现在其他应用程序的虚拟 MIDI 列表中。
我的问题是:是否可以使用MusicPlayer,MusicSequence和MusicTrack(来自AudioToolbox)将音序器连接到AVAudioUnitSampler(来自AVFoundation)?
另一种选择显然是使用 anAudioComponentDescription和构建一个来构建采样器AUGraph,但我想尽可能使用 Audiokit 助手。
编辑:关键步骤似乎是使用MusicTrackSetDestNode它需要一个AUNode. AVAudioUnitSampler是AVAudioNode具有auAudioUnit类型 属性的AUAudioUnit。基本的 API 就像AUGraphNodeInfo为您提供来自音频节点的音频单元。如何从音频单元获取音频节点?