From c74a6c1e5cfda97197ae5378b6c33bebb39b06fc Mon Sep 17 00:00:00 2001 From: kevindelord Date: Fri, 18 Jul 2014 11:50:55 +0200 Subject: [PATCH] bug fix: now works with custom Swift classes --- Project/.DS_Store | Bin 0 -> 6148 bytes .../xcschemes/xcschememanagement.plist | 24 ++++++++++++++++++ Project/UISS/UISSParser.m | 15 ++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Project/.DS_Store create mode 100644 Project/UISS.xcodeproj/xcuserdata/kevindelord.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Project/.DS_Store b/Project/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5661670a44b3add30807af7d5a26837b1859b107 GIT binary patch literal 6148 zcmeHKy-EZz5S}@&I1uDY%k+YHZxD{PuwLwiT~Wkkm%{_gyofL0%lIaC_I~rD+~T5K zBO)_P@=cPNN%Fxa86x8Kwp|e|iD-c$$f8V$bWaY=+;|RTjd4nk)KE_?T~7r1i(Rtz zBf6vus`2fvf1nL^a(92Ts++zWbn*Q5{F8mxS5>=xXoy~3pH9^4+xT7I?qxsR?yP5a zrV~UJ3~yGVbsAuFc1uUG9c$eLJ`c4#ZZq9RGI<+qM^CwFZ^xk3>UyCMn%`sfjWhMXhEI%wlb Zbl7FbVkl9hU)_Q65Kuy*3I=|Gfp?V^H3k3x literal 0 HcmV?d00001 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