2015-06-09 2 views
6

я получаю ошибкуSwift 2.0: вывод типа закрытия ошибки

Невозможно вывести тип закрытия в текущем контексте

В коде, который работал в Swift 1.2

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

Всего View Controller, где я получаю эту ошибку

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

Можете ли вы показать весь контекст? '_mapVC', по-видимому, является свойством некоторого класса, и ваша декларация, похоже, работает в Playground, если я помещаю ее в простое определение класса (и обманывает ваш' MapViewController') ... – Grimxn

+0

Добавлен другой контроллер, но с той же ошибкой ... – UnRewa

+2

Вы пытались добавить аннотацию типа? 'private lazy var _messagesVC: MessagesViewController = {..}()' –

ответ

4

Я нашел два способа избавиться от этой ошибки.

Во-первых, явно аннотируйте свойство с его типом. Я считаю это очень странным, потому что Swift должен просто вывести это из инициализации.

lazy var embeddedViewController: CustomViewController = CustomViewController() 

Второй - это просто удалить ленивое ключевое слово.

var embeddedViewController = CustomViewController() 

Таким образом, я думаю, что это ошибка, которая в настоящее время вызывает ленивые свойства в Swift 2.0?

+0

Явное объявление типа работает для меня – onmyway133