From 33bcac2f5a15df77f773fd0af16a3cb7fb6da997 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=92=99?= <921854304@qq.com> Date: Fri, 14 Aug 2015 08:51:26 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20@property=20(%@,=20non?= =?UTF-8?q?atomic)=20=E5=92=8C=20@property=20(nonatomic,=20%@)=20=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ESJsonFormat/Controller/ESSettingController.m | 5 ++++ .../Controller/ESSettingController.xib | 29 ++++++++++++++----- ESJsonFormat/ESJsonFormatManager.m | 17 ++++++----- ESJsonFormat/Setting/ESJsonFormatSetting.h | 2 ++ ESJsonFormat/Setting/ESJsonFormatSetting.m | 11 +++++++ 5 files changed, 49 insertions(+), 15 deletions(-) diff --git a/ESJsonFormat/Controller/ESSettingController.m b/ESJsonFormat/Controller/ESSettingController.m index ab006ee..4299958 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,6 +26,7 @@ - (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; @@ -47,6 +49,9 @@ - (IBAction)btnUpercaseKeyWordForIdClick:(NSButton *)sender { [[ESJsonFormatSetting defaultSetting] setUppercaseKeyWordForId:sender.state]; } +- (IBAction)btnPropertyPosition:(NSButton *)sender { + [[ESJsonFormatSetting defaultSetting] setPropertyPosition:sender.state]; +} - (IBAction)tapGes:(NSClickGestureRecognizer *)sender { NSURL* url = [[ NSURL alloc ] initWithString :@"http://t.cn/RLarUfg"]; 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 From 5f52f2a25bdba46ec25cfedaed76577a25d45650 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=92=99?= <921854304@qq.com> Date: Sat, 15 Aug 2015 13:01:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?@"@property=20(%@,=20nonatomic)"=20:=20@"@p?= =?UTF-8?q?roperty=20(nonatomic,=20%@)"=20=E7=8A=B6=E6=80=81=E6=8F=90?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ESJsonFormat/Controller/ESSettingController.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ESJsonFormat/Controller/ESSettingController.m b/ESJsonFormat/Controller/ESSettingController.m index 4299958..8c192fc 100644 --- a/ESJsonFormat/Controller/ESSettingController.m +++ b/ESJsonFormat/Controller/ESSettingController.m @@ -31,6 +31,8 @@ - (void)windowDidLoad { if (![ESUtils isXcode7AndLater]) { self.btnGeneric.enabled = NO; } + + [self updateSettingState]; } - (IBAction)btnImpMtdForMJClick:(NSButton *)sender { @@ -51,6 +53,7 @@ - (IBAction)btnUpercaseKeyWordForIdClick:(NSButton *)sender { - (IBAction)btnPropertyPosition:(NSButton *)sender { [[ESJsonFormatSetting defaultSetting] setPropertyPosition:sender.state]; + [self updateSettingState]; } - (IBAction)tapGes:(NSClickGestureRecognizer *)sender { @@ -58,6 +61,9 @@ - (IBAction)tapGes:(NSClickGestureRecognizer *)sender { [[NSWorkspace sharedWorkspace] openURL:url]; } - +- (void)updateSettingState +{ + self.btnPropertyPosition.title = self.btnPropertyPosition.state ? @"@property (%@, nonatomic)" : @"@property (nonatomic, %@)"; +} @end