2017-03-23 75 views
1

我一直在努力爭取一段時間,我已經接近有一個功能性應用程序,所以把我的頭髮拉出來。我從Facebook圖形請求中獲得了一些基本信息,並將其從字典中提取出來。然後我使用prepareforsegue將名稱傳遞給第二個視圖控制器。我計劃在各種不同場景中使用'姓名'作爲唯一標識符。在兩個視圖控制器之間傳遞變量時出現錯誤Swift

不幸的是,我收到一個錯誤,我不知道如何解決:'類型'UIStoryboardSegue'的值沒有成員'SecondViewController'。我已經在第二個視圖控制器中聲明瞭var:var destViewController:String!

任何指針將如此讚賞。我感到非常沮喪,因爲在這個工作之前,我無法轉向其他任何東西。

的代碼是在這裏:

let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager() 
     fbLoginManager.loginBehavior = FBSDKLoginBehavior.web 
     fbLoginManager.logIn(withReadPermissions:  ["public_profile","email"], from: self) { (result, error) -> Void in 
      if error != nil { 
       print(error?.localizedDescription) 
       self.dismiss(animated: true, completion: nil) 
      } else if (result?.isCancelled)! { 
       print("Cancelled") 
       self.dismiss(animated: true, completion: nil) 
      } else { 

     } 
    } 

    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, relationship_status, gender, location, education"]).start(completionHandler: { (connection, result, error) -> Void in 
     if (error == nil){ 
      let fbDetails = result as! NSDictionary 
      print(fbDetails) 

      if let userDataDict = result as? NSDictionary { 
      let name = userDataDict["name"] as? String 

       func prepareForSegue(segue: UIStoryboardSegue!, sender: Any!) { 
        if (segue.identifier == "loginToHome") { 
         //Checking identifier is crucial as there might be multiple 
         // segues attached to same view 
         var destViewController = segue.SecondViewController as? SecondViewController; 
         destViewController.name = name 

         var bookUniverse = [String]() 

        } 


      } 

     } 
    } 

回答

0

你不應該把對FBSDKGraphRequest內SEGUE功能做準備。你應該把這個代替:

self.performSegueWithIdentifier("loginToHome", sender: self) 

而非只透過名字,爲什麼不能有,你可以通過第二視圖控制器內的模型對象?如果你已經設置了名稱,創建一個類變量併爲其指定名稱,然後將該類變量傳遞給第二個視圖控制器。

func prepareForSegue(segue: UIStoryboardSegue!, sender: Any!) { 
       if (segue.identifier == "loginToHome") { 
        //Checking identifier is crucial as there might be multiple 
        // segues attached to same view 
        var destViewController = segue.SecondViewController as? SecondViewController; 
        destViewController.name = name 

        var bookUniverse = [String]() 

       } 
} 
+0

感謝您的回答。現在,我只是想抓住這個名字。如果我使用類,你的意思是這樣的:class name { static let userName =「name」 } –

+0

對不起,我有另一個問題,我很抱歉。我仍在學習。我在哪裏放課。在第一個頂部?非常感謝! –

+0

所以你想要做的是在你的類實例化之下,你會這樣做:fileprivate var someVariableName:String = name。那麼你可以這樣做:destViewController.name = someVariableName – Jay

相關問題