我正在努力在视图中输出随机字符串。
由于错误:
类型 '()' 不能符合 'View
我了解到 View 不是写下函数本身的合适位置。
我应该怎么做才能输出itemX.randomElement()和itemY.randomElement()?
struct SummaryView: View {
var avgValue = 1.5
var roundedKarvonenValue: Double
var itemX = ["A", "B", "C", "D", "E", "F", "G", "H"]
var itemY = ["I", "J", "K", "L", "M", "N", "O", "P"]
var body: some View {
ScrollView {
VStack(alignment: .leading) {
if workoutManager.averageHeartRate < roundedKarvonenValue {
print(itemX.randomElement()!)
} else {
print(itemY.randomElement()!)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 因此,我尝试在SwiftUI视图中调试时放入一条打印语句。
print("landmark: \(landmark)")
Run Code Online (Sandbox Code Playgroud)
在下面的身体。
var body: some View {
NavigationView {
List {
Toggle(isOn: $userData.showFavoritesOnly) {
Text("Favorite only")
}
ForEach(landmarkData) { landmark in
print("landmark: \(landmark)")
if !self.userData.showFavoritesOnly || landmark.isFavorite {
NavigationButton(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
}
}.navigationBarTitle(Text("Landmarks"))
}
}
Run Code Online (Sandbox Code Playgroud)
那么,在SwiftUI中打印到控制台的正确方法是什么?
编辑:我使Landmark符合CustomStringConvertible:
struct Landmark: Hashable, Codable, Identifiable, CustomStringConvertible {
var description: String { name+"\(id)" }
var id: Int
var name: String
.....
Run Code Online (Sandbox Code Playgroud)
我仍然收到“字符串不可转换为任何字符串”的错误。现在应该工作吗?
我是 Xcode、macOS 开发等方面的新手。所以也许只是因为我是新手 - 但我无法尽全力制作一个简单的打印输出来控制台工作。
我为我的问题创建了一个最小的非工作示例:
import SwiftUI
struct Test: View {
@State var message = "Test"
var body: some View {
Button(action: {
print("test worked")
message = "test worked"
}) {
Text(message)
}
}
}
struct Test_Previews: PreviewProvider {
static var previews: some View {
Test()
}
}
Run Code Online (Sandbox Code Playgroud)
执行此操作时,按钮文本会发生变化,但控制台中不会出现任何内容。
我尝试按照本教程进行操作,但它也不起作用:https ://www.hackingwithswift.com/read/18/2/basic-swift-debugging-using-print
我尝试根据此线程启用调试预览:How to print() to Xcode console in SwiftUI?
没有什么帮助..我正在使用 Xcode 版本 12.1 (12A7403) 顺便说一句。