swift2 从Swift 2.3转换到3.2时,无法将String类型的值转换为指定的NSManagedObjectContext类型

o4tp2gmn  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(169)

我需要帮助。虽然转换从Swift 2.3 -〉3.2我收到下面的错误。我不能解决这个错误。
下面是我的编码的东西,在那里我面临着一些问题。
错误1:无法将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非常陌生。无法理解这种类型的错误。

laik7k3q

laik7k3q1#

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

x0fgdtte

x0fgdtte2#

错误2:

URL没有任何使用context:的构造函数。请尝试改用init(fileURLWithPath:)(它需要一个字符串,因此您需要将filePath设置为字符串的示例,而不是NSManagedObject)。
请参阅Apple here网址上的官方文档。

编辑

由于您要返回自定义URL对象(NSManagedObject的子类),因此需要更改函数的返回类型。
-> Foundation.URL-> URL。我建议将您的自定义URL子类重命名为其他名称,因为这个名称已经被Apple使用,可能会导致一些命名空间问题(编译器会感到困惑,您会得到错误)。

相关问题