2017-07-02 122 views
-1

do中的语句未被执行。任何人都可以帮助我解决这个问题?非常感谢!无法将“String”类型的值转换为预期的参数类型“URL”

class func copyFile(fileName: NSString){ 

    let fileManager = FileManager.default 

    let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask) 

    guard documentsURL.count != 0 else{ 
     return 
    } 

    let finalDatabaseURL = documentsURL.first!.appendingPathComponent(fileName as String) 

    if !((try? finalDatabaseURL.checkResourceIsReachable()) ?? false){ 
     print("Database does not exist in documents") 

     let documentsURL = Bundle.main.resourceURL?.appendingPathComponent(fileName as String) 

     do{ 
      try fileManager.copyItem(at: (documentsURL?.path)!, to: finalDatabaseURL.path) 

     }catch let error as NSError{ 
      print("Couldn't copy file to final location!Error:\(error.description)") 
     } 
    }else{ 
     print("Database file found at path:\(finalDatabaseURL.path)") 
    } 


} 
+3

的[无法将类型的价值可能重复'字符串?到期望的参数类型'URL'](https://stackoverflow.com/questions/40360716/cannot-convert-value-of-type-string-to-expected-argument-type-url) – Parker

回答

0

copyItem(at srcURL: URL, to dstURL: URL)需要两个URL参数,并且您正在传递字符串。

你可以使用这个。

try fileManager.copyItem(at: documentsURL!, to: finalDatabaseURL) 

try fileManager.copyItem(atPath: (documentsURL?.path)!, toPath: finalDatabaseURL.path) 
相关问题