考虑到这是一个心率图表,我试图将图表的 Y 最大刻度设置为 210 (bpm),例如,但.chartYScale(domain: 0 ... 210)只有当我输入 200 或 300 时,它似乎才能正确缩放,中间的任何值都不起作用。这是故意的还是错误?
import SwiftUI
import Charts
import HealthKit
struct TestYAxisRangeChart: View {
let heartRateData = [80.0, 90.0, 120.0, 150.0, 160.0, 140.0, 125.0, 110.0, 88.0]
var body: some View {
Chart {
ForEach(heartRateData, id: \.self) { sample in
LineMark(
x: .value("", heartRateData.firstIndex(of: sample)!),
y: .value("HR", sample))
.foregroundStyle(Color.red)
}
}
.chartYAxis{
AxisMarks(position: .leading)
}
.frame(height: 300)
.padding(.horizontal)
.chartYScale(domain: 0 ... 210)
}
}
struct TestYAxisRangeChart_Previews: PreviewProvider {
static var previews: …Run Code Online (Sandbox Code Playgroud) TimelineProvider我正在尝试为 iOS 16制作一个WeatherKit,但我正在努力解决如何满足协议签名并使用新的异步 api 的问题。
这是我的代码:
struct WeatherProvider: TimelineProvider {
func getSnapshot(in context: Context, completion: @escaping (WeatherEntry) -> ()) {
let weather = try? await WeatherService.shared.weather(for: currentLocation)
let entry = WeatherEntry(date: Date(), wind: nil, locationAuthStatus: nil)
completion(entry)
}
// etc
}
Run Code Online (Sandbox Code Playgroud)
编译此命令会引发构建错误'async' call in a function that does not support concurrency。
自动修复建议:Add 'async' to function 'getSnapshot(in:completion:)' to make it asynchronous
但如果你这样做,结构就不再符合:Type 'WeatherProvider' does not conform to protocol 'TimelineProvider'
这感觉应该是微不足道的,但我找不到任何关于如何做到这一点的例子。
我正在尝试了解新的 SwiftData 框架。只要我在 SwiftUI 视图中完成所有操作,就很容易让它工作。我试图成为一名优秀的编码员并将数据与 UI 分开,但无法连接到 ModelContainer 并且 ModelContext 是一个类文件。
这是一个可以按原样运行的示例:
模型:
@Model
final public class Thing: Identifiable {
let myID = UUID()
var name: String
var comment: String
init(name: String, comment: String) {
self.name = name
self.comment = comment
}
}//struct
Run Code Online (Sandbox Code Playgroud)
ContentView:更改Button中的代码以创建10条测试记录以使用VM版本。
struct ContentView: View {
@StateObject var contentVM = ContentViewModel()
@Environment(\.modelContext) private var context
@State private var name: String = ""
@State private var comment: String = ""
@State private var selection: Thing?
@Query(sort: \.name) var things: …Run Code Online (Sandbox Code Playgroud) 我是 SwiftUI 的新手,对于我的第一个应用程序,我决定尝试 SwiftData,因为我不想稍后将其转换为 SwiftData。我的应用程序有计时器(MyTimer),每个计时器都有一个名称和几个重置,每个重置都有一个日期和一个文本字符串。我希望用户能够选择 MyTimer 并查看其重置列表,然后从那里能够编辑或删除其中的任何一个。因此,我的第一个视图允许创建 MyTimer 并向其添加重置。第二个视图显示所选 MyTimer 的重置列表。
我遇到的问题是,当我删除多个重置时,重置数组似乎没有更新,如果您从列表的同一行删除第二个重置,它会尝试删除已删除的重置,并且我收到错误:线程 1:致命错误:此方法不准备对脱离其托管对象上下文的支持数据进行操作。关系需要通过 objectID 进行深度复制才能发挥作用。
这是应用程序数据模型文件的代码:
import Foundation
import SwiftData
import SwiftUI
@Model
final class MyTimer {
var id: String
var name: String
@Relationship(deleteRule: .cascade)
var resets: [Reset]
@Transient
var sortedResets: [Reset] {
print(resets.count)
return self.resets.sorted { $0.date > $1.date }
}
init(_ name: String = "",
startDate: Date = .now) {
let id = UUID().uuidString
self.id = id
self.name = name
self.resets = [Reset(text: "Started On", date: startDate)]
} …Run Code Online (Sandbox Code Playgroud) 我知道有 Swift REPL 和 Xcode 游乐场,但我想知道 Swift 中是否有替代方案,ruby -e "<code>"其中sh -c "<code>"给定的一行代码将作为命令的结果执行?
我一整天都在寻找如何从应用程序委托中呈现视图控制器。看来在 xcode 11 中,window 属性被移动到了 scenedelegate,这让我很困惑。我想从 didReceiveRemoteNotification 函数的 appdelegate 中呈现一个视图控制器,这样当用户收到通知时,它会将他们带到一个包含信息的单独视图控制器。我曾尝试这样做:
self.window?.rootViewController?.present(LoginViewController(), animated: false, completion: nil)
Run Code Online (Sandbox Code Playgroud)
在 appdelegate 中,它曾经在我以前的应用程序中工作,但它似乎不再工作了。任何帮助将非常感激。
我想创建一个全局变量来显示加载视图。我尝试了很多不同的方法,但不知道该怎么做。我需要能够在整个应用程序中访问此变量,并在更改单例的布尔值时更新 MotherView 文件。
struct MotherView: View {
@StateObject var viewRouter = ViewRouter()
var body: some View {
if isLoading { //isLoading needs to be on a singleton instance
Loading()
}
switch viewRouter.currentPage {
case .page1:
ContentView()
case .page2:
PostList()
}
}
}
struct MotherView_Previews: PreviewProvider {
static var previews: some View {
MotherView(viewRouter: ViewRouter())
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下面的单例,但它不允许我更新共享实例?如何更新单例实例?
struct LoadingSingleton {
static let shared = LoadingSingleton()
var isLoading = false
private init() { }
}
Run Code Online (Sandbox Code Playgroud) 我使用 AVFoundation 制作了一个简单的快速音频视图。该代码适用于下载的文件,但我不希望应用程序大小很大。如果我可以从 URL 链接中使用它,是否可以?
我的代码是
import SwiftUI
import AVFoundation
import AVFAudio
struct AudioTest: View {
@State var song1 = false
var body: some View {
Image(systemName: song1 ? "pause.circle.fill": "play.circle.fill")
.font(.system(size: 25))
.padding(.trailing)
.onTapGesture {
playSound(sound: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3", type: "mp3")
song1.toggle()
if song1{
audioPlayer1?.play()
} else {
audioPlayer1?.pause()
}
}
}
}
struct AudioTest_Previews: PreviewProvider {
static var previews: some View {
AudioTest()
}
}
var audioPlayer1: AVAudioPlayer?
func playSound1(sound: String, type:String){
if let path = Bundle.main.path(forResource: sound, ofType: type) …Run Code Online (Sandbox Code Playgroud) 我正在尝试将应用程序的新版本上传到 App Store,但收到此错误:
签名无效。代码无法满足指定的代码要求。路径 [MyApp.app/MyApp] 处的文件未正确签名。确保您使用分发证书而不是临时证书或开发证书签署您的应用程序。验证 Xcode 中的代码签名设置在目标级别是否正确(覆盖项目级别的任何值)。此外,请确保您上传的包是使用 Xcode 中的 Release 目标而不是 Simulator 目标构建的。如果您确定代码签名设置正确,请在 Xcode 中选择“Clean All”,删除 Finder 中的“build”目录,然后重建您的发布目标。欲了解更多信息,请参阅 https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html(ID:3a7649b2-33eb-4c70-90a4-b3c87e5e699c )
有人对如何解决这个问题有一些想法吗?
swift ×5
swiftui ×5
ios ×4
swift-data ×2
async-await ×1
avfoundation ×1
bash ×1
code-signing ×1
publish ×1
set ×1
singleton ×1
struct ×1
terminal ×1
weatherkit ×1
widgetkit ×1