首页 > 解决方案 > 在 segue 之后处理任何可选的

问题描述

我还是 swift 语言的新手。经过一天的搜索,我不是来自以下。在 segue 之后,我将以下数据作为 Any? 目的。

Optional(<Hond: 0x604000297cf0> (entity: Hond; id: 0xd000000000080000 <x-coredata://9C4A92D6-5E7D-4633-827E-0E2BB6F005CA/Hond/p2> ; data: {
    chipnummer = 0;
    dierenarts = "";
    geboortedatum = "2015-11-28 08:56:33 +0000";
    geslacht = 0;
    gewicht = 0;
    hondId = "30A102CB-E0A5-49F1-ABAA-6E73CA32AF43";
    kleur = "";
    naam = Ravi;
    orderID = 1;
    plaatsVanChip = "";
    schofthoogte = 0;
    telefoonnummerDierenarts = "";
    vachttype = ""; }))

现在我认为我必须将数据视为可选的,但这根本不起作用。现在我的问题是如何显示名称和日期等值?

 import UIKit
 import CoreData

    class hondDetialView: UIViewController {

        var hond:Any?

        override func viewDidLoad() {
            super.viewDidLoad()
            //print(hond as Any)

            if let eenWaarde = hond {
                print(eenWaarde)
            }
            // Do any additional setup after loading the view.
        }

感谢您的帮助 :)

标签: swiftcore-dataoptional

解决方案


Any是最坏的选择。

它是 Swift 中最不明确的类型。它告诉编译器I-have-no-idea-what-it-is。并且编译器不知道有像naamand之类的属性geboortedatum

你知道类型是Hond,所以声明属性

var hond: Hond?

甚至NSManagedObject会比Any。然后你可以写

if let eenWaarde = hond {
    print(eenWaarde.naam)
}

如果 segue 总是发送一个Hond实例,您甚至可以将该属性声明为隐式展开可选

var hond: Hond!

并省略可选绑定

print(hond.naam)

推荐阅读