重命名默认contentView后的SwiftUI“使用未解析的标识符”
Posted
技术标签:
【中文标题】重命名默认contentView后的SwiftUI“使用未解析的标识符”【英文标题】:SwiftUI "Use of unresolved identifier" after renaming default contentView 【发布时间】:2020-06-06 17:59:51 【问题描述】:我在 Xcode 中创建了一个新项目,并尝试将默认的 contentView
文件重命名为 LandmarkDetail
。
我已将 ContentView.swift 重命名为 LandmarkDetail.swift,更新了 contentView
结构的名称,并使用新的视图名称更新了“SceneDelegate.swift”。我的代码如下:
LandmarkDetail.swift:
import SwiftUI
struct LandmarkDetail: View
var body: some View
VStack
MapView()
.edgesIgnoringSafeArea(.top)
.frame(height: 300)
CircleImage()
.offset(y: -130)
.padding(.bottom, -130)
VStack(alignment: .leading)
Text("Turtle Rock")
.font(.title)
HStack
Text("Joshua Tree National Park")
.font(.subheadline)
Spacer()
Text("California")
.font(.subheadline)
.padding()
Spacer()
struct LandmarkDetail_Previews: PreviewProvider
static var previews: some View
LandmarkDetail()
SceneDelegate.swift:
import UIKit
import SwiftUI
class SceneDelegate: UIResponder, UIWindowSceneDelegate
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialised and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: LandmarkDetail())
self.window = window
window.makeKeyAndVisible()
...
但是,构建失败并在 SceneDelegate.swift 中出现 Use of unresolved identifier 'LandmarkDetail'
错误。我已经替换了所有出现的contentView
,但我怀疑我错过了更新其他内容,因为找不到我的 LandmarkDetail 视图。
我已尝试进行干净的构建,以防某些内容被缓存。而且我找不到任何提及需要在其他地方添加导入或更改以使 LandmarkDetail 可从 SceneDelegate 类调用。
【问题讨论】:
尝试清理构建并重建 认为我最初尝试清理构建时使用了错误的键盘快捷键。嗬!无论如何,清理构建和删除 DerivedData 文件的组合使我的构建再次运行。谢谢! 【参考方案1】:对于未来,请始终通过 cmd+单击类名来重命名类,然后单击“重命名...”。这会自动找到对该类的所有引用并为您重命名它们,这样您就不会意外错过任何一个。
但即使在这之后你是对的,如果这不起作用,清理构建并删除 derivedData 应该可以解决任何剩余的错误。
【讨论】:
以上是关于重命名默认contentView后的SwiftUI“使用未解析的标识符”的主要内容,如果未能解决你的问题,请参考以下文章
iOS/iPadOS 中的 SwiftUI + DocumentGroup:如何重命名当前打开的文档
AppDelegate 和 ContentView() 之间的 SwiftUI 通信
在 SwiftUI 开始渲染 ContentView 之前,我们如何从 Views 中独立运行一些逻辑?
ContentView (SwiftUI) 的背景图像不是子视图,但具有正确的滚动行为
SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject