2017-09-14 23 views
0

我有一个func,我想返回一个配置的UIDocumentInteractionController处理可能无返回func?

问题是,如果我不能构建文档URL,我想返回,但不能像func需要返回查看器。我怎样才能使FUNC返回观众如果URL是有效的,或者如果它不存在编辑此功能...

func saveBase64StringToPDF(base64String: String, title: String) -> UIDocumentInteractionController { 
    guard var documentsURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last, 
      let convertedData = Data(base64Encoded: base64String) 
     else { 
      return // issue is here 
    } 

    documentsURL.appendPathComponent(title) 

    do { 
     try convertedData.write(to: documentsURL) 
    } catch { 
     print("FAILED TO WRITE") 
    } 
    let interactionController = UIDocumentInteractionController(url: documentsURL) 
    return interactionController 
} 
+2

只是作为func saveBase64StringToPDF(base64String:String,title:String) - > UIDocumentInteractionController? –

回答

0

你应该返回值可选

func saveBase64StringToPDF(base64String: String, title: String) -> UIDocumentInteractionController? { 
    guard var documentsURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last, 
      let convertedData = Data(base64Encoded: base64String) 
     else { 
      return nil 
      } 
    } 

    documentsURL.appendPathComponent(title) 

    do { 
     try convertedData.write(to: documentsURL) 
    } catch { 
     print("FAILED TO WRITE") 
    } 

    let interactionController = UIDocumentInteractionController(url: documentsURL) 
    return interactionController 
} 
+4

但是最好让函数抛出,并抛出适当的错误,解释失败的原因。 – user28434

1

使用UIDocumentInteractionController?在方法声明,而不是UIDocumentInteractionController

的返回类型旁边的任何类或对象?告诉编译器,它是可选的。可选可能包含一个值或零。