You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI教程中Xcode构建Landmarks失败及误导性弹窗问题

问题解决与弹窗说明

核心错误原因及修复步骤

实际触发崩溃的根源是**landmarkData.json未被正确添加到项目的主资源包**,而非弹窗提示的“macOS版本不兼容”。修复步骤如下:

  • 在Xcode项目导航栏中找到landmarkData.json文件
  • 选中文件后,查看右侧检查器(Inspector)的「Target Membership」选项
  • 确保当前运行的App target(默认是Landmarks)的复选框已勾选
  • 清理项目缓存:点击Xcode顶部菜单的Product > Clean Build Folder,随后重新构建运行

验证修复:重新打开LandmarkRow.swift的画布,若错误提示消失,说明资源已正确引入。

关于误导性macOS弹窗的说明

这些弹窗是系统级通用错误提示,无法直接修改或自定义。当App因未捕获的致命错误(比如找不到资源导致的Fatal error)崩溃时,macOS会根据进程退出状态码触发这类通用弹窗,不会读取App内的具体错误信息。

要避免这类误导性弹窗,需在代码中添加错误处理逻辑,提前捕获资源加载失败的情况:

// 修改landmarkData加载代码,添加错误处理
var landmarks: [Landmark] = {
    guard let url = Bundle.main.url(forResource: "landmarkData", withExtension: "json"),
          let data = try? Data(contentsOf: url),
          let loadedLandmarks = try? JSONDecoder().decode([Landmark].self, from: data) else {
        print("Failed to load landmark data")
        // 加载失败返回空数组,避免触发致命错误
        return []
    }
    return loadedLandmarks
}()

修改后,即使资源未正确添加,App也不会崩溃,只会在控制台打印错误信息,画布和运行时会显示正常的空状态,不会触发系统级的误导弹窗。

内容的提问来源于stack exchange,提问作者M T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:30:54