【发布时间】:2016-10-07 18:20:26
【问题描述】:
在AppDelegate.swift 中,首次启动时,目的是将一些示例文档放置在本地 Documents 文件夹中,如果启用了 iCloud,则放置在 iCloud Documents 文件夹中。
var templates = NSBundle.mainBundle().pathsForResourcesOfType(AppDelegate.myExtension, inDirectory: "Templates")
dispatch_async(appDelegateQueue) {
self.ubiquityURL = NSFileManager.defaultManager().URLForUbiquityContainerIdentifier(nil)
if self.ubiquityURL != nil && templates.count != 0 {
// Move sample documents from Templates to iCloud directory on initial launch
for template in templates {
let tempurl = NSURL(fileURLWithPath: template)
let title = tempurl.URLByDeletingPathExtension?.lastPathComponent
let ubiquitousDestinationURL = self.ubiquityURL?.URLByAppendingPathComponent(title!).URLByAppendingPathExtension(AppDelegate.myExtension)
// let exists = NSFileManager().isUbiquitousItemAtURL(ubiquitousDestinationURL!)
do {
try NSFileManager.defaultManager().setUbiquitous(true, itemAtURL: tempurl, destinationURL: ubiquitousDestinationURL!)
}
catch let error as NSError {
print("Failed to move file \(title!) to iCloud: \(error)")
}
}
}
return
}
在运行此之前,我从设备中删除了该应用程序,并确保 iCloud 中没有该名称的文档。首次启动时,没有 iCloud,示例文档会正确复制到本地 Documents 文件夹中。使用 iCloud,此代码会运行,setUbiquitous 调用会导致错误,指出文件已存在。对isUbiquitousItemAtURL 的注释调用也返回true。
是什么让这些调用注册了一个我很确定不存在的文件?谢谢!
【问题讨论】:
标签: ios swift icloud appdelegate