2016-04-09 10 views
0

ユーザーがテーブルビュー内の行をクリックすると、viewcontroller(JobDetailsVC)に移動しようとしています。私はSwift 2で作業をするのとちょっと混乱しています。現在、 '' JobDetailsTableVC.datastruct 'という型の値を割り当てることができないため、' JobDetails 'と入力するとエラーが表示されます。ここでprepareForSegue(Swift 2)でデータを渡す

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     let JobDetailsViewController = segue.destinationViewController as! JobDetailsVC 

     if let selectedJobCell = sender as? JobDetailsCell { 
      let indexPath = tableView.indexPathForCell(selectedJobCell)! 
      let selectedJob = TableData[indexPath.row] 

      print(selectedJob) 
      JobDetailsViewController.Job = selectedJob 
     } 
    } 

selectedJobが正しく、私は例えばを渡したいデータを割り当てられている私のprepareforsegueのコードです。

datastruct(日付:オプション( "12 Mar 2016")、参照:オプション( "this is a reference")、開始:オプション( "11:38 am")、終了:オプション( "6:40 pm" )、説明:任意(「これは説明です」)、期間:オプション(「7:10」)、ジョブID:オプション(「348」)、トークン:オプション(「11dc886610」)、注:なし) []

datastructは、現在のビューコントローラで

struct datastruct 
{ 
    var date:String? 
    var reference:String? 
    var start:String? 
    var end:String? 
    var description:String? 
    var duration:String? 
    var job_id:String? 
    var token:String? 
    var notes:String? 



    init(add: NSDictionary) 
    { 
     date = add["date"] as? String 
     reference = add["reference"] as? String 
     start = add["start"] as? String 
     end = add["end"] as? String 
     description = add["description"] as? String 
     job_id = add["job_id"] as? String 
     token = add["token"] as? String 
     duration = add["duration"] as? String 
     notes = add["notes"] as? String 
    } 
} 

から来て、私はこれを持っている:

私は(JobDetailsVC)にデータを送信したいビューコントローラで
var Job = [JobDetails]() 

0私はこれを持っている:

私はクラス

class JobDetails { 

var date:String? 
var reference:String? 
var start:String? 
var end:String? 
var description:String? 
var duration:String? 
var job_id:String? 
var token:String? 
var notes:String? 

init(date: String, reference: String, start: String, end: String, description: String, duration: String, job_id: String, token: String, notes: String) 
{ 

    self.date = date 
    self.reference = reference 
    self.start=start 
    self.end=end 
    self.description=description 
    self.job_id=job_id 
    self.token=token 
    self.notes=notes 
    self.duration=duration 

} 

}

缶の中で宣言JobDetailsを持って

var Job: JobDetails? 

誰も私を助けてください?おかげ

+4

エラーが発生したため、JobDetails型の変数にデータ構造を割り当てようとしています: 'JobDetailsViewController.Job = selectedJob'。 datastructとJobDetailsが同じプロパティを持っている場合、両方を持つ理由は何ですか? – beyowulf

+0

答えはありませんが、変数名は小文字で始める必要があります(例: 'let JobDetailsViewController' - >' jobDetailsViewController')。あなたがクラスについて話しているときと、オブジェクトについていつ知っているかは、はるかに簡単になります。私が 'JobDetailsViewController.Job'を読んだ場合、' JobDetailsViewController'というクラスの 'Job'列挙型/構造体を参照していると仮定します。 – EmilioPelaez

+0

ありがとう@beyowulf、あなたは正しいので、これで問題を解決できました。 JobDetailsクラスを宣言する必要はありませんでした。 – Jarrow

答えて

-1
あなたがJobDetailsの配列としてジョブを定義している

お知らせ:selectedJob一度

var Job = [JobDetails]() 

はただ一つの項目では、あなたがこれを行うことはできません。

JobDetailsViewController.Job = selectedJob 

はただの仕事の定義を変更しますto:

var Job = JobDetails() 

しかし、ジョブをVC上のジョブの配列として保持するには、次のようにします。

JobDetailsViewController.Job += [selectedJob]