在Xcode5.1中构建一个项目,该项目在Xcode6GM中进行了修改,用于测试旧版本的iOS

在Xcode5.1中构建一个项目,该项目在Xcode6GM中进行了修改,用于测试旧版本的iOS,ios,iphone,storyboard,xcode5,xcode6,Ios,Iphone,Storyboard,Xcode5,Xcode6,我的应用程序使用Xcode5.1情节提要至少支持iOS6 在Xcode 6 GM中完成了几项工作之后,我需要在iOS 6模拟器上进行测试。 Xcode 6 GM没有iOS 6模拟器。所以,我在Xcode 5.1中打开了我的项目 但它无法建立。我甚至无法在Xcode5.1中打开情节提要 在导航窗格中,它显示 Main_iPhone.storboard Interface Builder Storyboard Compiler Error The document"(null)" requires

我的应用程序使用Xcode5.1情节提要至少支持iOS6

在Xcode 6 GM中完成了几项工作之后,我需要在iOS 6模拟器上进行测试。 Xcode 6 GM没有iOS 6模拟器。所以,我在Xcode 5.1中打开了我的项目

但它无法建立。我甚至无法在Xcode5.1中打开情节提要

在导航窗格中,它显示

Main_iPhone.storboard
Interface Builder Storyboard Compiler Error
The document"(null)" requires Xcode6.0 or later.
当我点击它时,会出现一个提示

The document "Main_iPhone.storyboard" requires Xcode 6.0 or later.
This version does not support constraints to layout margins. Open this document with Xcode 6.0 or later.

您可以在右侧的标识检查器中更改此选项。
在Xcode 6中选择情节提要,打开identity inspector,然后在Xcode 5.1(或其他)中打开Interface Builder Document->open(接口生成器文档)

选择nib文件或情节提要,选择file inspector pic 1。在使用xcode 6创建的每个故事板中取消选中use size classes(图2),因为默认情况下它处于选中状态


尽管我不认为这是最终的解决方案, ,在我写这篇文章的时候,我只是忽略了那个“红色错误”,然后就跑掉了

它启动了iOS6模拟器,运行良好。我所要做的就是退出由Xcode 6启动的模拟器

错误消息仍然存在,我无法在Xcode 5.1中打开情节提要文件

但至少我能够在旧版本的iOS上测试它。因此,现在Xcode5.1仅用于测试我的应用程序:(


如果您找到更好的解决方案,请回答这个问题。谢谢。

在Xcode 6中添加几乎任何类型的布局约束都会导致情节提要(或.xib文件)与Xcode 5.1不兼容。如果您需要在Xcode 5.1中使用已用Xcode 6.0修改的情节提要,则必须删除所有基于“边距”的约束

执行以下步骤以使由Xcode 6修改的情节提要加载并使用Xcode 5再次编译:

使用Xcode 6:

  • 在序列图像板文件检查器的Interface Builder文档部分中,将“Opens in”设置为Xcode 5.1。设置此选项后,如果存在任何不兼容的边距约束,Xcode 6.0将生成警告

  • 识别边距约束的一种简单方法是在文本编辑器中打开情节提要(最好是在磁盘上更改文件时自动刷新的编辑器)。搜索“边距”一词并查找如下行:

    <constraint firstItem="gZc-ET-UKM" firstAttribute="leading" secondItem="MMQ-IT-qOo" secondAttribute="leadingMargin" constant="-8" id="H3i-wo-2Mm"/>
    
    
    
  • 这些约束需要删除或更新,以便直接基于superview而不是边距。可以通过在大纲视图中选择约束,然后转到尺寸检查器并取消选中“相对于边距”来更新约束,而不是删除约束第一项或第二项设置的下拉菜单中的选项。完成此操作后,还需要添加一个与边距匹配的常量(通常为8)

  • 删除或更新每个约束时,您应该在文本编辑器中看到情节提要文件更新并删除“边距”一词。删除所有不兼容的约束后,警告将消失,该行将从情节提要文件中消失:

        <capability name="Constraints to layout margins" minToolsVersion="6.0"/>
    
    
    
  • 如果删除了约束,最后一步是在Xcode 5中打开项目并重新创建它们

  • 我遇到了同样的问题,以下是我的解决方案:

    假设问题文件是
    Main.storboard

  • 使用Xcode 6开放项目
  • 选择Main.storboard open作为源代码
  • 在源代码中搜索“边距”
  • 在Interface Builder中,取消选中相对于边距的“相对约束”

  • xcode 5不支持大小类。如果在某个地方启用了该功能,请将其禁用。谢谢您的评论,@nyekimov。我不熟悉自动布局,我没有选中“使用大小类”。我如何知道xcode 5不支持哪一个?我有同样的问题。“使用大小类”未选中,并且情节提要具有
    。好的,我更改为“在Xcode5.1中打开”。但在Xcode5.1中没有什么不同:(试图重新启动您的计算机?它不会每次都工作…:/Mark的回答之外,如果勾选了“对边距的约束”(默认情况下勾选),当固定在Xcode 6中时,它不会在Sttoryboard的XML源中消失code@KyleKIM我更新了步骤#3以显示需要取消选中的复选框。感谢您指出这一点。@KyleKIM I根据新发现再次更新了答案(真的重写了)。希望这将有助于任何需要使用新旧版本Xcode维护项目的人。