2015-06-09 17 views
6

ottengo l'erroreSwift 2.0: dedurre il tipo di chiusura errore

Impossibile dedurre il tipo di chiusura nel contesto attuale

Nel codice che stava lavorando a Swift 1,2

private lazy var _messagesVC = { return MessagesViewController(nibName:"MessagesViewController",bundle:nil)}() 

intero Visualizza Controller dove ottengo questo errore

import UIKit 
class FriendsViewController: UIViewController { 

@IBOutlet weak var containerView: UIView! 
@IBOutlet weak var segmentContainerView: UIView! 
private lazy var _connectionVC = { return FriendsConnectionViewController(nibName:"FriendsConnectionViewController",bundle:nil)}() 
private lazy var _messagesVC = { return MessagesViewController(nibName:"MessagesViewController",bundle:nil)}() 


override func viewDidLoad() { 
    super.viewDidLoad() 
    self.selectedControllerFrom(index: 0) 
    // Do any additional setup after loading the view. 
} 

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 

} 

func selectedControllerFrom(index index:UInt) 
{ 
    var vc:UIViewController? 
    switch index{ 
    case 0: vc = _connectionVC 
    case 1: vc = _messagesVC 
    default : vc = nil 
    } 
    if vc != nil{ 
     self.showViewController(vc!,containerView: containerView); 
    } 
} 
+0

Puoi mostrare l'intero contesto? '_mapVC' è presumibilmente una proprietà di qualche classe, e la tua dichiarazione sembra funzionare in Playground se la metto in una semplice definizione di classe (e falsi il tuo' MapViewController') ... – Grimxn

+0

Aggiunto altro controller ma con lo stesso errore ... – UnRewa

+2

Hai provato ad aggiungere un'annotazione di tipo? 'private lazy var _messagesVC: MessagesViewController = {..}()' –

risposta

4

Ho trovato due modi per sbarazzarsi di questo errore.

Innanzitutto, annotare esplicitamente la proprietà con il suo tipo. Trovo questo molto strano perché si suppone che Swift deduca solo questo dall'inizializzazione.

lazy var embeddedViewController: CustomViewController = CustomViewController() 

Il secondo è solo per rimuovere la parola chiave lazy.

var embeddedViewController = CustomViewController() 

Quindi immagino che questo sia un errore che affligge attualmente proprietà pigri in Swift 2.0?

+0

Dichiarando esplicitamente che il tipo funziona per me – onmyway133

Problemi correlati