2016-08-23 4 views
2

У меня есть словарь, объявленный в моем первом контроллере представления, и я хочу передать словарь через segue в контроллер подробного представления, единственная проблема в том, что я не совсем уверен, как достичь этого ?отправить словарь через segue в swift

словаря в первом виде контроллере:

var items = [NSDictionary]() 

Detail View Controller:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var Pr : DetailViewController = segue.destinationViewController as! DetailViewController 

ответ

1

var items = [NSDictionary]() - это массив элементов NSDictionary. Если вы хотите NSDictionary - объявить его без квадратных скобок:

var items = NSDictionary() 

Теперь в DetailViewController вы должны заявить о собственности, которая будет в состоянии удерживать переданный словарь. Это может быть точно так же называется:

class DetailViewController: UIViewController { 
    var items = NSDictionary() 
    /* ... */ 
} 

Теперь вы можете использовать prepareForSegue для прохождения словаря (вы должны использовать идентификатор SEGUE, выставиться в раскадровке):

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "yourSegue" { 
     let Pr : DetailViewController = segue.destinationViewController as! DetailViewController 
     Pr.items = items 
    } 
} 
1

В вашем DetailViewController добавить переменную элементы.

class DetailViewController : UIViewController { 
    var items : NSDictionary? 
} 

Затем в вашем приготовлении к segue задайте значение.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let destView : DetailViewController = segue.destinationViewController as? DetailViewController { 
     destView.items = self.items 
    } 
} 
+0

Довольно низкое качество ответа. Свойство 'items' (или' item'?) 'DetailViewController' не будет принимать' items' из класса OP; Если в другом «DetailViewController» есть другие сегменты, они, вероятно, не захотят иметь эти предметы. –

+0

OP говорит, что у него есть словарь, но на самом деле имеется массив диктовки, поэтому я предположил, что он просто набрал его неправильно. Должен был упомянуть об этом. OP говорит, что хочет передать словарь из FirstViewController в DetailViewController. Именно это и происходит. – Yannick

+0

Когда вы принимаете что-то, вы должны указать его на свой ответ, я верю. Ваш код ничего не делает, потому что он не будет компилироваться даже с вашими предположениями. Не пишите быстрые и короткие и часто полные ошибок, попробуйте сделать качество вместо этого. –