我曾经使用以下语句将重要的应用程序数据(如登录凭据)保存到 UserDefaults 中:
UserDefaults.standard.set("sample@email.com", forKey: "emailAddress")
Run Code Online (Sandbox Code Playgroud)
现在,我知道 SwiftUI 引入了新的属性包装器,称为:
@AppStorage
谁能解释一下新功能的工作原理?
看来我们现在可以在 iOS 15 中onAppear(action:)或task(priority:action:)在 iOS 15 中执行相同的任务。但是,我找不到task(priority:action:)比onAppear(action:). 有谁能解释一下吗?
我从 API 调用获取用户个人资料信息,并希望将现有数据(如姓名、性别等)填充到我的用户个人资料字段中。但是,我不知道如何分配sfullName的状态变量( )TextField。以下代码是完整表单视图的子视图。我在 上进行网络呼叫parent view .onAppear{}。这是我的代码:
import SwiftUI
struct FormPartOneView: View {
@State var fullName: String = ""
@ObservedObject var userProfile = UserProfileViewModel()
var body: some View {
GeometryReader { geometry in
VStack {
TextField("Full Name", text: self.$fullName)
.padding(.horizontal)
}
.font(.system(size: 13))
.frame(width: geometry.size.width/1.2, height: 40)
.overlay(
RoundedRectangle(cornerRadius: 5)
.stroke(Color("Border2"), lineWidth: 1)
)
.onAppear {
self.userProfile.fetchWithAF()
}
}
}
}
struct FormPartOneView_Previews: PreviewProvider {
static var previews: some View {
FormPartOneView()
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个手机号码(孟加拉国号码)。我希望当我单击“紧急呼叫”按钮时,我的应用程序将带我到 iPhone 的默认电话应用程序进行呼叫。但是,我有两个按钮,分别称为“Call For Query”和“Emergency Call”。在第一个按钮中,我使用链接“https://google.com”,它非常好用。但不是带有手机号码的第二个按钮。当我按下第二个按钮时,它会出现以下错误:
无法打开 URL tel://+8801700000001: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=247, _LSFunction=-[_LSDOpenClient openURL:options:completionHandler:]}
是不是因为 iPhone 模拟器中没有电话应用程序?
这是我的代码:
import SwiftUI
struct CallUsView: View {
@State var callForEmergency: String = "+8801700000001"
var body: some View {
GeometryReader { geometry in
ZStack {
Image("App Background")
.resizable()
.aspectRatio(contentMode: .fit)
.offset(y: -geometry.size.height/3)
VStack {
Button(action: {
if self.callForQuery != "" {
let mobileURL = "https://google.com"
guard let url = URL(string: mobileURL) else { return }
UIApplication.shared.open(url)
}
}) {
Image("Call For Query") …Run Code Online (Sandbox Code Playgroud)