Приложение мастер-детали, проходящий объект

Я уверен, что упускаю из виду что-то основное, но я расстраиваюсь из-за этого. Я не могу получить доступ к свойствам объекта, выбранного в строке и переданного в подробный вид. Вот соответствующий код:

AppDelegate:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    // Override point for customization after application launch.
    let splitViewController = self.window!.rootViewController as! UISplitViewController
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem()
    splitViewController.delegate = self

    let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
    let controller = masterNavigationController.topViewController as! MasterViewController
    controller.managedObjectContext = self.managedObjectContext
    return true
}

Мастервиевконтроллер:

override func viewDidLoad() {
    super.viewDidLoad()
    if let split = self.splitViewController {
        let controllers = split.viewControllers
        self.detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
    }
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showDetail" {
        if let indexPath = self.tableView.indexPathForSelectedRow {
            let object = matchups[indexPath.row]
            let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
            controller.detailItem = object
            controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
            controller.navigationItem.leftItemsSupplementBackButton = true
            controller.detailItem = matchups[indexPath.row]
        }
    }
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if (detailViewController != nil) {
        self.detailViewController!.detailItem = matchups[indexPath.row]
    }
}

Деталвиевконтроллер:

var detailItem: AnyObject? {
    didSet {
        self.configureView()
    }
}


func configureView() {
    // Update the user interface for the detail item.
    if let detail = self.detailItem {
        if let label = self.detailDescriptionLabel {
            label.text =  detail //** This is where the problem lies **//
        }
    }
}

Это код шаблона Apple. Я также пробовал следовать веб-учебникам, в которых используются альтернативные методы, и у меня все еще возникают проблемы. Что мне не хватает? Заранее спасибо.


person Shades    schedule 24.06.2015    source источник


Ответы (1)


Тест — это строка, DetailItem — это AnyObject?. Перед назначением необходимо привести detailItem к требуемому типу.

Какой предполагается тип detailItem? Это просто строка? В таком случае вы можете написать как? в вашем, если бы определение, этого было бы достаточно.

person Nikita Leonov    schedule 25.06.2015
comment
Я знал, что упускаю что-то основное. Большое Вам спасибо. - person Shades; 25.06.2015