【发布时间】:2018-10-31 21:50:00
【问题描述】:
用更简单的例子创建了一个新问题here。
我在 Xcode 中遇到了一些奇怪的行为,包括提供不正确的变量值,以及在我离开时编译良好的旧项目中出现语法错误。
回到干净的 Xcode 的最佳方法是什么? 应用程序目录中有两个(或更多)Xcode 可执行文件是否存在问题?我一次只运行一个版本...
是否可以完全删除所有程序数据文件和缓存文件,就好像我从未安装过Xcode一样?
如果没有,是否有可以安全删除的缓存/等列表?
这是我迄今为止尝试过的,基于 Stack Overflow 搜索:
- 清理项目 (CMD+OPT+K)。重新启动 Xcode。重启 Mac
- 已下载 Xcode 9.4.1。运行这个版本(没有删除 Xcode 10)。可以运行任一版本
- 已验证的 Swift 版本设置为 4.1(4.2 不是一个选项)
- 已删除派生数据文件夹。文件> 项目设置.. 点击
派生数据文件夹旁边的右箭头。已删除特定项目
文件。还尝试删除整个文件夹
这是我的悲惨故事:我已经在一个项目上工作了大约 6-8 周,在 High Sierra 上使用 Xcode 9.4.1。我是一个新手,所以我创建了一些简单的“概念验证”应用程序来了解文本视图、属性字符串、Web 视图等。这些小项目中的每一个都编译并运行良好。
我将这些功能组合到一个应用程序中,并添加了一个 Cocoa Pod 库。同样,一切都编译得很好。我正在调试代码中的简单问题。在某一时刻,Xcode 停止在我的代码的变量显示中显示正确的值。我只能使用 print() 语句进行调试,它总是显示正确的变量值。
我升级 (?) 到 Xcode 10,然后升级到 Mojave 以尝试解决 Xcode 的不正确变量值。出现了其他问题,包括 evaluateJavaScript 的已知问题。所以我决定回到莫哈韦之前的状态,回到工作状态。我使用 Time Machine 在 High Sierra 下恢复到 Xcode 10。
现在我的项目出现编译错误。即使是我的简单概念验证应用程序也有编译错误。所以我一直在尝试回到可编译的代码。
我还应该尝试什么来确定发生了什么变化?
这是产生语法错误的特定属性字符串代码:
let titleAttributes = [NSAttributedString.Key.font: NSFont.boldSystemFont(ofSize: 22)]
给出错误:
Type 'NSAttributedString' has no member 'Key'
我在 segue 上也遇到了错误:
performSegue(withIdentifier: "showSecondVC", sender: self)
报错
Cannot convert value of type 'String' to expected argument type 'NSStoryboardSegue.Identifier'
为这篇长文道歉。在 Unix 下,很容易将用户帐户或应用程序恢复到已知的初始状态。在 Mac OS X 下似乎更难...
感谢您的任何建议!
【问题讨论】:
-
NSAttributedString.Key和NSStoryboardSegue.Identifier是 Swift 4.2,NSAttributedStringKey和NSStoryboardSegueIdentifier是 Swift 4.1。通过 Xcode 中的源代码控制,可以非常方便地恢复到项目的先前版本。 -
NSAttributedString.Key适用于 Swift 4.2。您的问题与 Xcode 无关,与 macOS 版本无关。为您的 Swift 版本使用正确的 API。最好的办法是让 Xcode 为您完成代码。 -
@vadian 感谢您确认这是 Swift 4.2 代码。我正在使用 Git。在将 Swift 语言从“Swift 4”更改为“Swift 4.2”之后,这确实可以在 Xcode 10 中编译。 Xcode 9.4.1 是否支持 Swift 4.2?我的 9.4.1 Swift 语言选择只有“Swift 3.3”或“Swift 4.1”。我一直在使用 Xcode 10 吗?我在调试期间重新安装了 Xcode 10,那么如何确定我原来的 Xcode 10 安装日期?这是在 App Store 日志中,还是在 Xcode 特定日志中?这些都不能帮助我解决 Xcode 打印不正确的变量值的问题,但它很有帮助,感谢您的帮助!
-
@maddy 如何确定特定 Swift 版本的给定方法的语法?是否有描述随时间变化的方法的中心文档,或者我是否需要查看特定的发行说明?你能指点我这个信息的链接吗?谢谢