Ios 如何在swift中将一个值从一个委托传递给另一个委托?

Ios 如何在swift中将一个值从一个委托传递给另一个委托?,ios,swift,Ios,Swift,我想将documentPicker中的url传递给previewController。由于他们都是代表,我不能简单地返回,因为这将违反协议。如何将数据从一个视图传递到另一个视图?谢谢 func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! { //var doc = NSURL(fileURLWithPath: url)

我想将documentPicker中的url传递给previewController。由于他们都是代表,我不能简单地返回,因为这将违反协议。如何将数据从一个视图传递到另一个视图?谢谢

func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! {
    //var doc = NSURL(fileURLWithPath: url)
    return doc
}
func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
    println("\(url)")
    var quickView = QLPreviewController()
    quickView.dataSource = self
    presentViewController(quickView, animated: true, completion: nil)
}
~~~~~~~~~~~~~更新~~~~~~~~~~~~~ 6.2~~~~~~~~~~~~~~ 现在我按照下面的思路回答

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
    println("\(url)")

    var a: String = "\(url)"

    NSUserDefaults.standardUserDefaults().setObject(a, forKey: "URL")

    var quickView = QLPreviewController()


    quickView.dataSource = self

    presentViewController(quickView, animated: true, completion: nil)




}

通过这样做,我避免了NSUserDefaults的格式问题,但程序仍然在doc处中断(线程1:断点1.1)

例如,当运行它并选择一个文件时,url是 file:///private/var/mobile/Containers/Data/Application/DEE5190D-6E3F-4400-8866-4668B830C588/tmp/DocumentPickerIncoming/Experiment_7.PDF

文档为:可选(文件:/private/var/mobile/Containers/Data/Application/DEE5190D-6E3F-4400-8866-4668B830C588/tmp/DocumentPickerIncoming/Experiment_7.PDF——文件://)


它们是一样的。为什么应用程序会中断?

您可以将Url存储在
NSUserDefaults
中。你想什么时候用就什么时候用。您可以在
NSUserDefaults

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
println("\(url)")

NSUserDefaults.standardUserDefaults().setObject(url, forKey: "URL")

var quickView = QLPreviewController()


quickView.dataSource = self

presentViewController(quickView, animated: true, completion: nil)

}
并在中检索它

func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! {

var doc = NSUserDefaults.standardUserDefaults().objectForKey("URL") as! NSUrl
return doc
}

关于
计算机科学
标签不太确定…首先非常感谢!但是我得到了这个错误:属性列表对于格式200无效(属性列表不能包含'CFURL'类型的对象)尝试设置非属性列表对象file:///private/var/mobile/Containers/Data/Application/E35D89E8-3C43-47CC-8F69-265AAAC06F21/tmp/DocumentPickerIncoming/Experiment_7.PDF 作为键URL的NSUserDefaults/CFPreferences值,他们似乎不喜欢URL类型。如何解决这个问题?非常感谢。我想。但我的名声太低,不能这么做。一旦我获得了足够的声誉,我就会这么做。
func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! {

var doc = NSUserDefaults.standardUserDefaults().objectForKey("URL") as! NSUrl
return doc
}