无法转换表达式的类型'()''NilLiteralConverible'?

时间:2014-12-27 15:30:15

标签: ios xcode swift

以下代码构建错误:

var err:NSError?
_persistentStore = _persistentStoreCoordinator!.addPersistentStoreWithType(
            NSSQLiteStoreType,
            configuration: nil,
            URL: _coreDataPathURL,
            options: nil,
            error: err
    )

构建错误:无法转换表达式的类型'()''NilLiteralConverible'?

_persistentStoreCoordinator是一个可选的var。

我不明白为什么构建错误?!

1 个答案:

答案 0 :(得分:1)

问题是错误类型需要是NSErrorPointer,即指向NSError?的指针。

要隐式地将NSError?转换为其中之一,您只需在&前面加err

var err:NSError?
_persistentStore = _persistentStoreCoordinator!.addPersistentStoreWithType(
            NSSQLiteStoreType,
            configuration: nil,
            URL: _coreDataPathURL,
            options: nil,
            error: &err // <--
    )

(有关详细信息,请参阅the docs

构建错误是因为Swift正在尝试使用NSError的{​​{1}}初始值设定项,但失败了,因为它需要一种NilLiteralConvertible作为其参数(小心,当Swift可以' t使任何可能的重载都起作用,它经常会给你一个关于一个特定可能性的编译器错误,这可能会产生误导。)