代码:
if !NSFileManager.defaultManager().fileExistsAtPath(url.path!) {
let sourceSqliteURLs = [NSBundle.mainBundle().URLForResource("CoreDataDemo", withExtension: "sqlite")!, NSBundle.mainBundle().URLForResource("CoreDataDemo", withExtension: "sqlite-wal")!, NSBundle.mainBundle().URLForResource("CoreDataDemo", withExtension: "sqlite-shm")!]
let destSqliteURLs = [self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite"),
self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite-wal"),
self.applicationDocumentsDirectory.URLByAppendingPathComponent("CoreDataDemo.sqlite-shm")]
var error:NSError? = nil
for var index = 0; index < sourceSqliteURLs.count; index++ {
NSFileManager.defaultManager().copyItemAtURL(sourceSqliteURLs[index], toURL: destSqliteURLs[index])
//showing error at this line
}
}
编译器在try和catch块中期待NSFileManager
。我不知道该怎么做。
答案 0 :(得分:3)
要使用copyItemAtURL
功能,您可以执行以下三项操作之一。
1)尝试/捕捉
do {
try NSFileManager.defaultManager.copyItemAtURL(sourceSqliteURLs[index], toURL: destSqliteURLs[index])
} catch {
print(error)
}
这是标准的错误处理方法。您的所有代码都将放在do
块中,包括try
语句,并且任何错误都将在catch
块中处理。
2)try!
try! NSFileManager.defaultManager()...
如果try!
引发错误,则会导致运行时崩溃。
3)try?
try? NSFileManager.defaultManager()...
呼叫将成功或呼叫结果为零。没有错误抛出,没有崩溃。
我建议你阅读文档,这一切都非常明确。