diff --git a/Project/.DS_Store b/Project/.DS_Store new file mode 100644 index 0000000..5661670 Binary files /dev/null and b/Project/.DS_Store differ diff --git a/Project/UISS.xcodeproj/xcuserdata/kevindelord.xcuserdatad/xcschemes/xcschememanagement.plist b/Project/UISS.xcodeproj/xcuserdata/kevindelord.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..27d3a91 --- /dev/null +++ b/Project/UISS.xcodeproj/xcuserdata/kevindelord.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,24 @@ + + + + + SuppressBuildableAutocreation + + E1B438AE143F668000F87518 + + primary + + + E1ED8BE01450D4E100302B61 + + primary + + + E1ED8C0A1450D4E200302B61 + + primary + + + + + diff --git a/Project/UISS/UISSParser.m b/Project/UISS/UISSParser.m index cdf38b0..88a678a 100644 --- a/Project/UISS/UISSParser.m +++ b/Project/UISS/UISSParser.m @@ -106,7 +106,7 @@ - (void)processKey:(NSString *)key object:(id)object context:(UISSParserContext [self parseDictionary:object context:context]; [context.groupsStack removeLastObject]; } else { - Class class = NSClassFromString(key); + Class class = [self classFromString:(key)]; if (class) { [self processClass:class object:object context:context]; @@ -142,4 +142,17 @@ - (NSArray *)parseDictionary:(NSDictionary *)dictionary; { return [self parseDictionary:dictionary errors:nil]; } +#pragma mark - Class + +- (Class)classFromString:(NSString *)className { + Class class = NSClassFromString(className); + if (!class) { + // if the class doesn't exist as a pure Obj-C class then try to retrieve it as a Swift class. + NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; + NSString *classStringName = [NSString stringWithFormat:@"_TtC%d%@%d%@", appName.length, appName, className.length, className]; + class = NSClassFromString(classStringName); + } + return class; +} + @end