Я получаю что-то странное, чего я не могу получить. Я использую элемент управления 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
}];
И проверить объекты DataSource против него отображения. Объекты строить для меня, как:
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
.
BTW, что мне нужно для замены NSStringFromClass
, чтобы получить точно NSMutableDictionary
?
@ user529758 Будет ли приложение отклонены, если мы сравним имя класса таким способом (т.е. с частным подклассу NSMutableDictionary). ? Например, '[@" __ NSDictionaryM "isEqualToString: NSStringFromClass ([obj class])]' –