diff --git a/ESJsonFormat/Controller/ESSettingController.m b/ESJsonFormat/Controller/ESSettingController.m index ab006ee..8c192fc 100644 --- a/ESJsonFormat/Controller/ESSettingController.m +++ b/ESJsonFormat/Controller/ESSettingController.m @@ -13,6 +13,7 @@ @interface ESSettingController () @property (weak) IBOutlet NSButton *btnImpMJExtesion; @property (weak) IBOutlet NSButton *btnGeneric; @property (weak) IBOutlet NSButton *btnOutputToFile; +@property (weak) IBOutlet NSButton *btnPropertyPosition; @end @@ -25,10 +26,13 @@ - (void)windowDidLoad { self.btnImpMJExtesion.state = (NSCellStateValue)[[ESJsonFormatSetting defaultSetting] impOjbClassInArray]; self.btnGeneric.state = (NSCellStateValue)[[ESJsonFormatSetting defaultSetting] useGeneric]; self.btnOutputToFile.state = (NSCellStateValue)[[ESJsonFormatSetting defaultSetting] outputToFiles]; + self.btnPropertyPosition.state = (NSCellStateValue)[[ESJsonFormatSetting defaultSetting] propertyPosition]; if (![ESUtils isXcode7AndLater]) { self.btnGeneric.enabled = NO; } + + [self updateSettingState]; } - (IBAction)btnImpMtdForMJClick:(NSButton *)sender { @@ -47,12 +51,19 @@ - (IBAction)btnUpercaseKeyWordForIdClick:(NSButton *)sender { [[ESJsonFormatSetting defaultSetting] setUppercaseKeyWordForId:sender.state]; } +- (IBAction)btnPropertyPosition:(NSButton *)sender { + [[ESJsonFormatSetting defaultSetting] setPropertyPosition:sender.state]; + [self updateSettingState]; +} - (IBAction)tapGes:(NSClickGestureRecognizer *)sender { NSURL* url = [[ NSURL alloc ] initWithString :@"http://t.cn/RLarUfg"]; [[NSWorkspace sharedWorkspace] openURL:url]; } - +- (void)updateSettingState +{ + self.btnPropertyPosition.title = self.btnPropertyPosition.state ? @"@property (%@, nonatomic)" : @"@property (nonatomic, %@)"; +} @end diff --git a/ESJsonFormat/Controller/ESSettingController.xib b/ESJsonFormat/Controller/ESSettingController.xib index 2933b1d..9ef2772 100644 --- a/ESJsonFormat/Controller/ESSettingController.xib +++ b/ESJsonFormat/Controller/ESSettingController.xib @@ -9,6 +9,7 @@ + @@ -16,14 +17,14 @@ - + - + - + @@ -68,7 +69,7 @@ + + + @@ -94,7 +107,7 @@ - + diff --git a/ESJsonFormat/ESJsonFormatManager.m b/ESJsonFormat/ESJsonFormatManager.m index fc81610..154c8cc 100644 --- a/ESJsonFormat/ESJsonFormatManager.m +++ b/ESJsonFormat/ESJsonFormatManager.m @@ -45,6 +45,9 @@ + (NSString *)parsePropertyContentWithClassInfo:(ESClassInfo *)classInfo{ * @return */ + (NSString *)formatObjcWithKey:(NSString *)key value:(NSObject *)value classInfo:(ESClassInfo *)classInfo{ + + NSString *propertyFormat = [[ESJsonFormatSetting defaultSetting] propertyPosition] ? @"@property (%@, nonatomic) %@ *%@;" : @"@property (nonatomic, %@) %@ *%@;"; + NSString *qualifierStr = @"copy"; NSString *typeStr = @"NSString"; //判断大小写 @@ -52,12 +55,12 @@ + (NSString *)formatObjcWithKey:(NSString *)key value:(NSObject *)value classInf key = [key uppercaseString]; } if ([value isKindOfClass:[NSString class]]) { - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@ *%@;",qualifierStr,typeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,key]; }else if([value isKindOfClass:[@(YES) class]]){ //the 'NSCFBoolean' is private subclass of 'NSNumber' qualifierStr = @"assign"; typeStr = @"BOOL"; - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@ %@;",qualifierStr,typeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,key]; }else if([value isKindOfClass:[NSNumber class]]){ qualifierStr = @"assign"; NSString *valueStr = [NSString stringWithFormat:@"%@",value]; @@ -71,7 +74,7 @@ + (NSString *)formatObjcWithKey:(NSString *)key value:(NSObject *)value classInf typeStr = @"long long"; } } - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@ %@;",qualifierStr,typeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,key]; }else if([value isKindOfClass:[NSArray class]]){ NSArray *array = (NSArray *)value; @@ -90,9 +93,9 @@ + (NSString *)formatObjcWithKey:(NSString *)key value:(NSObject *)value classInf qualifierStr = @"strong"; typeStr = @"NSArray"; if ([ESJsonFormatSetting defaultSetting].useGeneric && [ESUtils isXcode7AndLater]) { - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@%@ *%@;",qualifierStr,typeStr,genericTypeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,genericTypeStr,key]; } - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@ *%@;",qualifierStr,typeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,key]; }else if ([value isKindOfClass:[NSDictionary class]]){ qualifierStr = @"strong"; ESClassInfo *childInfo = classInfo.propertyClassDic[key]; @@ -100,9 +103,9 @@ + (NSString *)formatObjcWithKey:(NSString *)key value:(NSObject *)value classInf if (!typeStr) { typeStr = [key capitalizedString]; } - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@ *%@;",qualifierStr,typeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,key]; } - return [NSString stringWithFormat:@"@property (nonatomic, %@) %@ *%@;",qualifierStr,typeStr,key]; + return [NSString stringWithFormat:propertyFormat,qualifierStr,typeStr,key]; } diff --git a/ESJsonFormat/Setting/ESJsonFormatSetting.h b/ESJsonFormat/Setting/ESJsonFormatSetting.h index b1ef6f0..ec76791 100644 --- a/ESJsonFormat/Setting/ESJsonFormatSetting.h +++ b/ESJsonFormat/Setting/ESJsonFormatSetting.h @@ -17,4 +17,6 @@ @property BOOL outputToFiles; @property BOOL uppercaseKeyWordForId; +@property BOOL propertyPosition; + @end diff --git a/ESJsonFormat/Setting/ESJsonFormatSetting.m b/ESJsonFormat/Setting/ESJsonFormatSetting.m index 5db43a2..436c333 100644 --- a/ESJsonFormat/Setting/ESJsonFormatSetting.m +++ b/ESJsonFormat/Setting/ESJsonFormatSetting.m @@ -13,6 +13,7 @@ NSString *const kESJsonFormatOutputToFiles = @"com.EnjoySR.ESJsonFormat.OutputToFiles"; NSString *const kESJsonFormatImpObjClassInArray = @"com.EnjoySR.ESJsonFormat.ImpObjClassInArray"; NSString *const kESJsonFormatUppercaseKeyWordForId = @"com.EnjoySR.ESJsonFormat.UppercaseKeyWordForId"; +NSString *const kESJsonFormatPropertyPosition = @"com.EnjoySR.ESJsonFormat.PropertyPosition"; @implementation ESJsonFormatSetting @@ -26,6 +27,7 @@ + (ESJsonFormatSetting *)defaultSetting kESJsonFormatOutputToFiles: @NO, kESJsonFormatImpObjClassInArray: @YES, kESJsonFormatUppercaseKeyWordForId: @NO}; +// kESJsonFormatPropertyPosition: @NO,}; [[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; }); return defaultSetting; @@ -67,4 +69,13 @@ - (BOOL)uppercaseKeyWordForId{ return [[NSUserDefaults standardUserDefaults] boolForKey:kESJsonFormatUppercaseKeyWordForId]; } +- (void)setPropertyPosition:(BOOL)propertyPosition{ + [[NSUserDefaults standardUserDefaults] setBool:propertyPosition forKey:kESJsonFormatPropertyPosition]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} + +- (BOOL)propertyPosition{ + return [[NSUserDefaults standardUserDefaults] boolForKey:kESJsonFormatPropertyPosition]; +} + @end