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