首页 > 解决方案 > 如何在swift中找到其他类中的类实例名称?

问题描述

想象一下我们有两个这样的类的情况:

class MyClass {
    func printInstanceName() {
        print(what?);
    }
}

class User {
    var firstObject: MyClass!
    var secondObject: MyClass!
}

我将像这样实例化 User 类的对象:

let user = User();
user.firstObject = MyClass()
user.secondObject = MyClass()

我应该如何实现printInstanceName下面的代码输出

user.firstObject.printInstanceName()
user.secondObject.printInstanceName()

firstObject
secondObject

这样做的目的是,我想知道从MyClassinUser的哪个实例printInstanceName被调用!

标签: iosswiftreflection

解决方案


您不能从 MyClass 中获取属性名称,只能从 User 中获取。

class MyClass { }

class User {
    var myObject: MyClass!
    
    func printInstanceName() {
        let mirror = Mirror(reflecting: self)
        for (label, value) in mirror.children {
            if type(of: value) == Optional<MyClass>.self {
                print(label!)
            }
        }
    }
}

let u = User()
u.printInstanceName()

推荐阅读