我的项目在更新Xcode之前构建良好。
但是,现在我不能再构建该项目。使用Swift 5时,构建项目永远不会完成。它停止在“构建70个100任务”中,并且永远不会完成。这些数字也不总是相同的,但是它永远不会完成。
如果我尝试使用Xcode将我的项目从Swift 4.2转换为Swift 5,则同样无法完成转换。
如果我尝试更改工具链以使用Swift 4.2.1版本的工具链,则代码可以成功编译,但是在运行时我会立即崩溃:
<div class = "container-1">
<div class="box-1">
<div class="box-1">E |</div>
<div class="box-1">A |</div>
<div class="box-1">D |</div>
<div class="box-1">G |</div>
<div class="box-1">B |</div>
<div class="box-1">E |</div>
</div>
<div class = "container-2" *ngFor="let currentTab of tabs;">
<div *ngIf="currentTab.string == 0; then thenBlock else elseBlock"></div>
<ng-template class="box-1" #thenBlock>{{currentTab.tab}}</ng-template>
<ng-template class="box-1" #elseBlock>-</ng-template>
<div *ngIf="currentTab.string == 1; then thenBlock else elseBlock"></div>
<ng-template class="box-1" #thenBlock>{{currentTab.tab}}</ng-template>
<ng-template class="box-1" #elseBlock>-</ng-template>
<div *ngIf="currentTab.string == 2; then thenBlock else elseBlock"></div>
<ng-template class="box-1" #thenBlock>{{currentTab.tab}}</ng-template>
<ng-template class="box-1" #elseBlock>-</ng-template>
<div *ngIf="currentTab.string == 3; then thenBlock else elseBlock"></div>
<ng-template class="box-1" #thenBlock>{{currentTab.tab}}</ng-template>
<ng-template class="box-1" #elseBlock>-</ng-template>
<div *ngIf="currentTab.string == 4; then thenBlock else elseBlock"></div>
<ng-template class="box-1" #thenBlock>{{currentTab.tab}}</ng-template>
<ng-template class="box-1" #elseBlock>-</ng-template>
<div *ngIf="currentTab.string == 5; then thenBlock else elseBlock"></div>
<ng-template class="box-1" #thenBlock>{{currentTab.tab}}</ng-template>
<ng-template class="box-1" #elseBlock>-</ng-template>
</div>
</div>
我尝试清理项目并删除派生数据,但似乎都无法正常工作。
如果我使用Xcode 10.1,则该项目将继续构建并正常运行。
答案 0 :(得分:2)
我的一些代码存在问题,涉及以自定义方式将ClosedRange
类型扩展为Encodable
和Decodable
。在Swift 5中,当ClosedRange
为Encodable
和Decodable
时,Bound
已经符合Encodable
和Decodable
,但是编译器没有给出我有一个关于冗余一致性的错误,而是挂在编译上。
修改代码以使用新的Swift 5协议一致性后,它可以很好地编译。但是,花了很长时间才将问题缩小到这个范围。在我看来,这是Swift编译器中的一个错误,因为即使在其他Mac上,编译器也挂在Playground或命令行中。
答案 1 :(得分:1)
您的项目是否包含任何第三个库?如果是这样,请尝试找出哪个已过时。尝试在没有此库的情况下构建项目,我非常确定其中一些库已经过时。您可能还需要将快速语言版本设置为旧版本。选择目标,转到“构建设置”>“ Swift语言版本”
答案 2 :(得分:1)
请删除衍生数据,
如果您在工作空间环境中,则可以转到“文件”>“工作空间设置”,对于常规项目环境,可以进入“文件”>“项目设置”。然后单击“派生数据”部分下的灰色小箭头,然后选择要删除的项目文件夹。
如果Pod不再集成并重新安装所有Pod文件。
希望这对您有用!
答案 3 :(得分:0)
禁用iCloud。
问题是由台式机和icloud之间的差异引起的!
花了24小时尝试查找工作空间在启动时会冻结的原因。