我收到一些我无法理解的奇怪东西。我使用的是thirdy方控制(https://github.com/brunow/TableKit.m),它做的事:什么是__NSDictionaryM。为什么NSStringFromClass不返回NSMutableDictionary?
+ (NSSet *)cellMappingsForObject:(id)object mappings:(NSDictionary *)mappings {
NSString *objectStringName = NSStringFromClass([object class]);
return [mappings objectForKey:objectStringName];
}
这是创建基于在类名的映射:
[TKCellMapping mappingForObjectClass:[NSMutableDictionary class] block:^(TKCellMapping *cellMapping) {
//CODE
}];
它反对检查数据源对象映射。这些物体是为我而建造的:
while ([rs next]) {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSString *fieldName in [props allKeys]) {
//CODE
[dict setValue:fieldValue forKey:fieldName];
}
[list addObject :dict]; //<--This is the datasource. The map is against each dict
}
所以,无论我说的是NSMutableDictionary
。但是这个奇怪的事情发生了。
当它调用NSStringFromClass([NSMutableDictionary class])
它说NSMutableDictionary
但它叫NSStringFromClass([rowDict class])
它说__NSDictionaryM
!
为什么会发生这种情况?我检查__NSDictionaryM
的标题,Xcode导航到NSMutableDictionary
(?)。我无法从__NSDictionaryM
创建对象。
顺便说一句,我需要做些什么来代替NSStringFromClass
才能得到准确的NSMutableDictionary
?
@ user529758请问如果我们比较类名这种方式(即用的NSMutableDictionary的私有子类)的应用程序被拒绝。 ? 例如,[[@“__ NSDictionaryM”isEqualToString:NSStringFromClass([obj class])]'' – 2014-09-21 18:37:34