Swift ivar“getTypeEncoding返回”&引用;迅速地

Swift ivar“getTypeEncoding返回”&引用;迅速地,swift,Swift,代码如下: 测试班 class test { var name: String! var age: String! var pu: Int! } 测试功能 func variableMap() { let ivars = class_copyIvarList(test.self, &temp.count) if ivars != nil { for i in 0..<Int(temp.count) {

代码如下:

测试班

class test {
    var name: String!
    var age: String!
    var pu: Int!
}
测试功能

func variableMap() {
    let ivars = class_copyIvarList(test.self, &temp.count)
    if ivars != nil {

        for i in 0..<Int(temp.count) {
            let thisIvar: Ivar = ivars[i]
            let type = ivar_getTypeEncoding(thisIvar)
            let str = String(CString: type, encoding: NSUTF8StringEncoding)
            var key = String(UTF8String: ivar_getName(thisIvar))
            let type1 = String(CString: type, encoding: NSProprietaryStringEncoding)


            print("\(key!)")
            print("\(type1!)")
        }
        free(ivars)
    }
}
问题:


我使用
let type=ivar\u getTypeEncoding(thisIvar)
但返回“”而不是属性的类型。我应该如何解决这个问题呢?

Swift可能正在使用内部包装器将这些
ivar
连接到ObjC中。我能让它工作的唯一方法是在ObjC中定义类
test

@interface test : NSObject

@property NSString * name;
@property NSString * age;
@property int pu;

@end
您可以在那里定义所有属性,然后在Swift中扩展该类

此外,您的代码中还有一个错误:

let type1 = String(CString: type, encoding: NSProprietaryStringEncoding)
                                            ^ should be NSUTF8StringEncoding

Swift可能正在使用内部包装器将这些
ivar
连接到ObjC。我能让它工作的唯一方法是在ObjC中定义类
test

@interface test : NSObject

@property NSString * name;
@property NSString * age;
@property int pu;

@end
您可以在那里定义所有属性,然后在Swift中扩展该类

此外,您的代码中还有一个错误:

let type1 = String(CString: type, encoding: NSProprietaryStringEncoding)
                                            ^ should be NSUTF8StringEncoding

ivar\u getTypeEncoding
在Swift中不可用,您究竟为什么要使用NSProprietaryStringEncoding?因为我使用NSUTF8StringEncoding返回“”,所以我尝试了另一种编码,但是,Swift中也没有错误
ivar\u getTypeEncoding
为什么您要使用NSProprietaryStringEncoding?因为我使用NSUTF8StringEncoding返回“”,所以我尝试了另一种编码,但也有错误谢谢您的回答,我使用objc类,它可以为我找到答案,我使用objc类,这对我来说很有用