作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有这两个类:
class User:Obj
{
var firstBook:Book?
var secondBook:Book?
}
class Book:Obj
{
func getMyName() -> String
{
// Something need to do here
// return name
}
}
let user = User()
let book_1 = Book()
user.firstBook = book_1
let book_2 = Book()
user.secondBook = book_2
print(book_2.getMyName()) //Expected: secondBook
print(book_1.getMyName()) //Expected: firstBook
正如你所理解的,我需要获取父类的变量名。如果也可以获得父类,那就太好了。类型
最佳答案
您可以使用反射实现类似的效果。您需要了解书籍对象中的用户对象,因此我添加了一个父变量。它需要很弱,以避免保留循环。
class User: Obj {
var firstBook: Book? {
didSet {
firstBook?.parent = self
}
}
var secondBook: Book? {
didSet {
secondBook?.parent = self
}
}
}
class Book: Obj {
weak var parent: Obj!
func getMyName() -> String {
let mirror = Mirror(reflecting: parent)
let variableName = mirror.children.filter { $0.value as? Book === self }.first?.label
return variableName!
}
}
关于swift - 需要知道在外部类中定义的内部类的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42565765/
我是一名优秀的程序员,十分优秀!