Swift:XCode6 Beta 5在AppDelegate中给核心数据对象带来错误

Ale*_*mad 7 ios swift xcode6

我正在用swift编程语言开发一个应用程序.我使用的是XCode6 Beta4版本,所有的东西都运行得很顺利.我今天已经将版本更新到Beta5,我在核心数据对象上得到的错误是:

  1. 类型' NSManagedObjectContext'不符合协议' BooleanType'.

  2. 类型' NSManagedObjectModel'不符合协议' BooleanType'.

  3. 类型' NSPersistentStoreCoordinator'不符合协议' BooleanType'.

还附有错误的屏幕截图.

在此输入图像描述

Kee*_*nle 14

实际上你得到的错误NSManagedObjectContext?,NSManagedObjectModel?NSPersistentStoreCoordinator?没有确认BooleanType协议.请注意?类型名称末尾的问号.

所以你正在处理Optionals.由于Beta 5 Optionals不再符合BooleanType协议.

您需要nil明确检查,更改:

if !_managedObjectContext {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

至:

if _managedObjectContext == nil {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

做同样的_managedObjectModel_persistentStoreCoordinator.

来自xCode 6 Beta 5发行说明:

现在可以使用==和!=将Optionals与nil进行比较,即使底层元素不是Equatable也是如此.

Optionals不再符合BooleanType(以前的LogicValue)协议,因此它们可能不再用于代替布尔表达式(它们必须与v!= nil明确比较).这解决了Bool的混乱局面?和相关类型,使代码更明确地说明预期的测试,并且与语言的其余部分更加一致.请注意,ImplicitlyUnwrappedOptional仍包含一些BooleanType功能.此问题将在未来的测试版中得到解决.