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类,这对我来说很有用