类型 'ContentView' 不符合协议 'View' (Xcode - Swift UI)
Type 'ContentView' does not conform to protocol 'View' (Xcode - Swift UI)
我尝试在 ContentView(Swift UI) 中为我的应用实现 ,Face ID" 功能,但之后我收到此错误 - "Type 'ContentView' does not conform到协议 'View'”。当我尝试修复错误时,它提供了解决方案:typealias Body = <#type#>
但我不知道该放什么。也许我只是以错误的方式实现了 Face ID,所以这是结果代码源和实现前的代码。
之后:
import SwiftUI
import LocalAuthentication
struct ContentView : View {
@State private var isUnlocked = false
@ObservedObject var service: DataService = .shared
var categories:[String:[Goal]] {
.init(
grouping: service.goals,
by: {[=15=].category.rawValue}
)
}
func authenticate() {
let context = LAContext()
var error: NSError?
// check whether biometric authentication is possible
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// it's possible, so go ahead and use it
let reason = "We need to unlock your data."
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in
// authentication has now completed
DispatchQueue.main.async {
if success {
self.isUnlocked = true
} else {
// there was a problem
}
}
var body: some View {
VStack {
if self.isUnlocked {
NavigationView{
List (categories.keys.sorted(), id:\.self) {key in
GoalRow(categoryName: "Level \(key)".uppercased(), goals: self.categories[key]!)
.frame(height: 320)
.padding(.top)
.padding(.bottom)
}
.navigationBarTitle(Text("Future"))
}
} else {
Text("Locked")
}
}
.onAppear(perform: authenticate)
}
}
#if DEBUG
struct Content_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
}
}
}
之前:
import SwiftUI
struct ContentView : View {
@ObservedObject var service: DataService = .shared
var categories:[String:[Goal]] {
.init(
grouping: service.goals,
by: { [=16=].category.rawValue }
)
}
var body: some View {
NavigationView{
List (categories.keys.sorted(), id:\.self) {key in
GoalRow(categoryName: "Level \(key)".uppercased(), goals: self.categories[key]!)
.frame(height: 320)
.padding(.top)
.padding(.bottom)
}
.navigationBarTitle(Text("Future"))
}
}
}
#if DEBUG
struct Content_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
首先,select所有代码,然后按cmd+i
进行代码缩进。
在代码中,您在代码末尾关闭了 3 个大括号,这是不正确的。添加这 3 个大括号以实现身份验证功能。
struct ContentView : View {
@State private var isUnlocked = false
@ObservedObject var service: DataService = .shared
var categories:[String:[Goal]] {
.init(
grouping: service.goals,
by: {[=10=].category.rawValue}
)
}
func authenticate() {
let context = LAContext()
var error: NSError?
// check whether biometric authentication is possible
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// it's possible, so go ahead and use it
let reason = "We need to unlock your data."
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in
// authentication has now completed
DispatchQueue.main.async {
if success {
self.isUnlocked = true
} else {
// there was a problem
}
}
}
}
}
//Your body view
}
#if DEBUG
struct Content_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
我尝试在 ContentView(Swift UI) 中为我的应用实现 ,Face ID" 功能,但之后我收到此错误 - "Type 'ContentView' does not conform到协议 'View'”。当我尝试修复错误时,它提供了解决方案:typealias Body = <#type#>
但我不知道该放什么。也许我只是以错误的方式实现了 Face ID,所以这是结果代码源和实现前的代码。
之后:
import SwiftUI
import LocalAuthentication
struct ContentView : View {
@State private var isUnlocked = false
@ObservedObject var service: DataService = .shared
var categories:[String:[Goal]] {
.init(
grouping: service.goals,
by: {[=15=].category.rawValue}
)
}
func authenticate() {
let context = LAContext()
var error: NSError?
// check whether biometric authentication is possible
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// it's possible, so go ahead and use it
let reason = "We need to unlock your data."
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in
// authentication has now completed
DispatchQueue.main.async {
if success {
self.isUnlocked = true
} else {
// there was a problem
}
}
var body: some View {
VStack {
if self.isUnlocked {
NavigationView{
List (categories.keys.sorted(), id:\.self) {key in
GoalRow(categoryName: "Level \(key)".uppercased(), goals: self.categories[key]!)
.frame(height: 320)
.padding(.top)
.padding(.bottom)
}
.navigationBarTitle(Text("Future"))
}
} else {
Text("Locked")
}
}
.onAppear(perform: authenticate)
}
}
#if DEBUG
struct Content_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
}
}
}
之前:
import SwiftUI
struct ContentView : View {
@ObservedObject var service: DataService = .shared
var categories:[String:[Goal]] {
.init(
grouping: service.goals,
by: { [=16=].category.rawValue }
)
}
var body: some View {
NavigationView{
List (categories.keys.sorted(), id:\.self) {key in
GoalRow(categoryName: "Level \(key)".uppercased(), goals: self.categories[key]!)
.frame(height: 320)
.padding(.top)
.padding(.bottom)
}
.navigationBarTitle(Text("Future"))
}
}
}
#if DEBUG
struct Content_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
首先,select所有代码,然后按cmd+i
进行代码缩进。
在代码中,您在代码末尾关闭了 3 个大括号,这是不正确的。添加这 3 个大括号以实现身份验证功能。
struct ContentView : View {
@State private var isUnlocked = false
@ObservedObject var service: DataService = .shared
var categories:[String:[Goal]] {
.init(
grouping: service.goals,
by: {[=10=].category.rawValue}
)
}
func authenticate() {
let context = LAContext()
var error: NSError?
// check whether biometric authentication is possible
if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) {
// it's possible, so go ahead and use it
let reason = "We need to unlock your data."
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: reason) { success, authenticationError in
// authentication has now completed
DispatchQueue.main.async {
if success {
self.isUnlocked = true
} else {
// there was a problem
}
}
}
}
}
//Your body view
}
#if DEBUG
struct Content_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif