我需要帮助。从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很新。无法理解这种类型的错误。
答案 0 :(得分:2)
let filePath: NSManagedObjectContext = (urlPath as NSString).appendingPathComponent(name)
应该阅读
let filePath: String = (urlPath as NSString).appendingPathComponent(name)
答案 1 :(得分:0)
错误2:
URL
没有使用context:
的构造函数。尝试使用init(fileURLWithPath:)
代替(需要一个字符串,因此您需要使filePath成为字符串的实例而不是NSManagedObject)。
请参阅Apple here上有关网址的官方文档。
修改强>
当您返回自定义URL对象(NSManagedObject的子类)时,您需要更改函数的返回类型。
从-> Foundation.URL
到-> URL
。我建议将自定义URL子类重命名为其他名称,因为此名称已被Apple使用,可能会导致一些命名空间问题(编译器会混淆并导致错误)。