2015-07-04 18 views
1

我目前正在研究基於ResearchKit框架(用Objective-C編寫)的swift醫學研究應用程序。我已將簽名分配給同意書,我正嘗試使用makePDFWithCompletionHandler創建PDF併發送電子郵件。這是完成處理目前我有同意的任務在我的視圖控制器:Swift ResearchKit makePDFWithCompletionHandler

func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?) { 
    taskViewController.dismissViewControllerAnimated(true, completion: nil) 
    if reason == .Completed { 
      ConsentDocument.makePDFWithCompletionHandler(/*Completion handler Block*/){ 
       //Email pdf code here 
      } 
     } 
} 

我想不出用什麼作爲完成處理塊。此外,我無法找到代碼,一旦創建它就會通過電子郵件發送PDF。

在本人同意的任務,我有以下的代碼簽名分配給文件:

let signatureResult = ORKConsentSignatureResult(identifier: "ConsentDocumentParticipantSignature") 
signatureResult.applyToDocument(ConsentDocument) 

回答

1

對於makePDFWithCompletionHandler完成塊,這對我的作品(注意,這是寫入到一個文件中塊):

ConsentDocument .makePDFWithCompletionHandler({ (NSData pdfFile, NSError error) -> Void in 
      // println("pdf created") 

      // finding document path //TODO: Remove if not needed 

      let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] .stringByAppendingPathComponent("Consent.pdf") 

      pdfFile!.writeToFile(documentsPath, atomically: false) 

      println(consentDocumentFromDirectory) 




     }) 
2

通過讓審查步驟簽名和應用上同意文件,你可以用makePdf完成塊PDF,可以節省您的磁盤上,或發送到服務器。

func taskViewController(taskViewController: ORKTaskViewController, didFinishWithReason reason: ORKTaskViewControllerFinishReason, error: NSError?) { 
    //Handle results with taskViewController.result 
    let taskResult = taskViewController.result 

    if reason == ORKTaskViewControllerFinishReason.Completed 
    { 
     var signatureResult : ORKConsentSignatureResult = taskResult.stepResultForStepIdentifier("ConsentReviewStep")?.firstResult as! ORKConsentSignatureResult 
     let document = ConsentDocument.copy() as! ORKConsentDocument 
     signatureResult.applyToDocument(document) 
     document.makePDFWithCompletionHandler({ (pdfData:NSData?, error: NSError?) -> Void in 

      var docURL = (NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)).last as? NSURL     
      docURL = docURL?.URLByAppendingPathComponent("myFileName.pdf") 

      //write your file to the disk. 
      pdfData?.writeToURL(docURL!, atomically: true) 
      //now you can see that pdf in your applications directory 

} 
0

雨燕3.1

let result = taskViewController.result 
       if let stepResult = result.stepResult(forStepIdentifier: ConsentReviewStepIdentifier), 
        let signatureResult = stepResult.results?.first as? ORKConsentSignatureResult { 
        signatureResult.apply(to: consentDocument) 

        consentDocument.makePDF { (data, error) -> Void in 
         var docURL = (FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)).last as NSURL? 
         docURL = docURL?.appendingPathComponent("myFileName.pdf") as NSURL? 


         //write your file to the disk. 


         do { 

          try data?.write(to:docURL! as URL) 
          print(docURL! as URL) 




         } catch let error { 

          print(error.localizedDescription) 
         } 


         //now you can see that pdf in your applications directory 

        } 

       } 
相關問題