"Bad property protocol declaration" 尝试初始化框架中的模型 class 时
"Bad property protocol declaration" when trying to initialize model class which is in framework
这两天我一直在努力解决这个问题。
我创建了 iOS 通用框架,其中包含我的模型 class 派生自 JSONModel。例如,
@protocol XYZ
@end
@interface XYZ : JSONModel
@property(nonatomic,strong) NSString * name;
@end
现在,每当我在其他项目中使用此 "Framework" 并尝试使用字典初始化 "XYZ" 模型 class,
NSError* err = nil;
XYZ * xyz = [[XYZ alloc] initWithDictionary:jsonDictionary error:&err];
它崩溃说 "Bad property protocol declaration"。
如果我不使用框架并将那些模型 class 直接放在我的项目中,它工作正常。不知道为什么会有这种有线行为。
两天来我一直在苦苦寻找解决方案,浪费了很多时间。我可以看到 github 中也提出了这个问题,但开发人员没有任何答复。这是非常令人沮丧的,甚至我不能在我项目的这个非常成熟的阶段放弃 JSONModel。我有太多模型 classes 和非常复杂的结构,我无法切换到另一个库。
请。任何帮助将不胜感激。提前谢谢你。
框架中的模型类似乎在使用字典初始化之前未被运行时加载,因为它在框架中,这就是为什么在下面的代码中
//few built-in transformations
-(id)__transform:(id)value forProperty:(JSONModelClassProperty*)property error:(NSError**)err
{
Class protocolClass = NSClassFromString(property.protocol);
if (!protocolClass) {
//no other protocols on arrays and dictionaries
//except JSONModel classes
if ([value isKindOfClass:[NSArray class]]) {
@throw [NSException exceptionWithName:@"Bad property protocol declaration"
reason:[NSString stringWithFormat:@"<%@> is not allowed JSONModel property protocol, and not a JSONModel class.", property.protocol]
userInfo:nil];
}
return value;
}
...........
}
"protocolClass" 为 Nil 并引发错误。
解决方案是简单地在其他链接器标志中添加“-Objc”标志,这样 类 就可以在静态库被使用之前由运行时加载。
希望这对其他人也有帮助。
这两天我一直在努力解决这个问题。
我创建了 iOS 通用框架,其中包含我的模型 class 派生自 JSONModel。例如,
@protocol XYZ
@end
@interface XYZ : JSONModel
@property(nonatomic,strong) NSString * name;
@end
现在,每当我在其他项目中使用此 "Framework" 并尝试使用字典初始化 "XYZ" 模型 class,
NSError* err = nil;
XYZ * xyz = [[XYZ alloc] initWithDictionary:jsonDictionary error:&err];
它崩溃说 "Bad property protocol declaration"。
如果我不使用框架并将那些模型 class 直接放在我的项目中,它工作正常。不知道为什么会有这种有线行为。
两天来我一直在苦苦寻找解决方案,浪费了很多时间。我可以看到 github 中也提出了这个问题,但开发人员没有任何答复。这是非常令人沮丧的,甚至我不能在我项目的这个非常成熟的阶段放弃 JSONModel。我有太多模型 classes 和非常复杂的结构,我无法切换到另一个库。
请。任何帮助将不胜感激。提前谢谢你。
框架中的模型类似乎在使用字典初始化之前未被运行时加载,因为它在框架中,这就是为什么在下面的代码中
//few built-in transformations
-(id)__transform:(id)value forProperty:(JSONModelClassProperty*)property error:(NSError**)err
{
Class protocolClass = NSClassFromString(property.protocol);
if (!protocolClass) {
//no other protocols on arrays and dictionaries
//except JSONModel classes
if ([value isKindOfClass:[NSArray class]]) {
@throw [NSException exceptionWithName:@"Bad property protocol declaration"
reason:[NSString stringWithFormat:@"<%@> is not allowed JSONModel property protocol, and not a JSONModel class.", property.protocol]
userInfo:nil];
}
return value;
}
...........
}
"protocolClass" 为 Nil 并引发错误。
解决方案是简单地在其他链接器标志中添加“-Objc”标志,这样 类 就可以在静态库被使用之前由运行时加载。
希望这对其他人也有帮助。