【问题标题】:Cannot convert value of type String to specified type NSManagedObjectContext, While converting from Swift 2.3 -> 3.2从 Swift 2.3 -> 3.2 转换时,无法将 String 类型的值转换为指定类型 NSManagedObjectContext
【发布时间】:2018-11-24 04:51:02
【问题描述】:

我需要帮助。从 Swift 2.3 -> 3.2 转换时,我收到以下错误。我无法解决此错误。

以下是我的编码资料,我遇到了一些问题。

Error1:无法将 String 类型的值转换为指定类型 NSManagedObjectContext**

错误 2:无法将类型 URL 的返回表达式转换为返回类型 URL。

 class func persistentFileURL(_ name: String, enclosingDirectoryName: String) -> Foundation.URL {
        let directoryURL = self.directoryForPersistentStorage(enclosingDirectoryName)
        let urlPath = directoryURL.path
        let filePath: NSManagedObjectContext = (urlPath as NSString).appendingPathComponent(name) //Error1 : Cannot convert value of type String to specified type NSManagedObjectContext 
        
        return URL(context: filePath) // Error2 : Cannot convert return expression of type URL to return type URL.
    }

注意:URL 是单独的类声明来处理这个问题:URL_Class

请帮助我。我对 iOS 很陌生。无法理解此类错误。

【问题讨论】:

    标签: ios swift swift2.3 swift3.2


    【解决方案1】:

    let filePath: NSManagedObjectContext = (urlPath as NSString).appendingPathComponent(name)

    应该阅读

    let filePath: String = (urlPath as NSString).appendingPathComponent(name)

    【讨论】:

    • 但仍有Error2
    【解决方案2】:

    错误 2:

    URL 没有任何使用context: 的构造函数。尝试使用 init(fileURLWithPath:) 代替(它需要一个字符串,因此您需要将 filePath 设为字符串的实例而不是 NSManagedObject)。

    请参阅 Apple here 的 URL 上的官方文档。

    编辑

    当您返回一个自定义 URL 对象(NSManagedObject 的子类)时,您需要更改函数的返回类型。

    -> Foundation.URL-> URL。我建议将您的自定义 URL 子类重命名为其他名称,因为此名称已被 Apple 使用,并且可能会导致一些命名空间问题(编译器会感到困惑并且您会收到错误)。

    【讨论】:

    • 请检查这个我有这个单独的 URL 类:i.stack.imgur.com/0VUYa.png
    • 但是您的函数返回的是 Foundation.URL 的实例,而不是您的自定义 URL 类的实例。似乎您需要更改函数的返回类型。 @维杰
    • 否,但为此创建了扩展,因此它可能不会给出命名空间错误。
    • 扩展 URL { NSManaged var baseURLArray: NSObject? NSManaged var selectedbaseURL:字符串? NSManaged var backendURLArray: NSObject? NSManaged var selectedbackendURL:字符串? NSManaged var authorizationKey: NSObject? NSManaged var selectedAuthorizationKey:字符串? }
    猜你喜欢
    • 1970-01-01
    • 2021-08-27
    • 2018-11-23
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2020-07-13
    • 1970-01-01
    相关资源
    最近更新 更多