Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 42ca839

Browse files
修改ReadMe,修改百度网盘下载地址
1.修改ReadMe 2.修改百度网盘下载地址。 3.新增Example07
1 parent 861669e commit 42ca839

File tree

21 files changed

+925
-32
lines changed

21 files changed

+925
-32
lines changed

‎MHDevelopExample/MHDevelopExample.xcodeproj/project.pbxproj

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,10 @@
255255
E932AADC20B68DF600C99B3C /* CMHDiscoverViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E932AADB20B68DF500C99B3C /* CMHDiscoverViewController.m */; };
256256
E932AADF20B68E0600C99B3C /* CMHContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E932AADE20B68E0600C99B3C /* CMHContactsViewController.m */; };
257257
E932AAE220B68E1800C99B3C /* CMHMainFrameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E932AAE120B68E1800C99B3C /* CMHMainFrameViewController.m */; };
258+
E933662720D0F75F00B6F51F /* MHEXTRuntimeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = E933662520D0F75E00B6F51F /* MHEXTRuntimeExtensions.m */; };
259+
E933662820D0F75F00B6F51F /* MHReflection.m in Sources */ = {isa = PBXBuildFile; fileRef = E933662620D0F75F00B6F51F /* MHReflection.m */; };
260+
E933662B20D0F86700B6F51F /* NSError+MHModelException.m in Sources */ = {isa = PBXBuildFile; fileRef = E933662A20D0F86700B6F51F /* NSError+MHModelException.m */; };
261+
E933662F20D12DD200B6F51F /* CMHExample07ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E933662E20D12DD200B6F51F /* CMHExample07ViewController.m */; };
258262
E943E45B20C4F29700AFC4A9 /* CMHExample00ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E943E45A20C4F29700AFC4A9 /* CMHExample00ViewController.m */; };
259263
E951601020C2807C007224DA /* CMHTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E951600720C2807C007224DA /* CMHTableViewController.m */; };
260264
E951601120C2807C007224DA /* CMHTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = E951600A20C2807C007224DA /* CMHTabBarController.m */; };
@@ -762,6 +766,14 @@
762766
E932AAE020B68E1800C99B3C /* CMHMainFrameViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMHMainFrameViewController.h; sourceTree = "<group>"; };
763767
E932AAE120B68E1800C99B3C /* CMHMainFrameViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CMHMainFrameViewController.m; sourceTree = "<group>"; };
764768
E932AAE320B68EC600C99B3C /* CMHConstEnum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMHConstEnum.h; sourceTree = "<group>"; };
769+
E933662320D0F75E00B6F51F /* MHReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHReflection.h; sourceTree = "<group>"; };
770+
E933662420D0F75E00B6F51F /* MHEXTRuntimeExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MHEXTRuntimeExtensions.h; sourceTree = "<group>"; };
771+
E933662520D0F75E00B6F51F /* MHEXTRuntimeExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHEXTRuntimeExtensions.m; sourceTree = "<group>"; };
772+
E933662620D0F75F00B6F51F /* MHReflection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MHReflection.m; sourceTree = "<group>"; };
773+
E933662920D0F86600B6F51F /* NSError+MHModelException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+MHModelException.h"; sourceTree = "<group>"; };
774+
E933662A20D0F86700B6F51F /* NSError+MHModelException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSError+MHModelException.m"; sourceTree = "<group>"; };
775+
E933662D20D12DD200B6F51F /* CMHExample07ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMHExample07ViewController.h; sourceTree = "<group>"; };
776+
E933662E20D12DD200B6F51F /* CMHExample07ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CMHExample07ViewController.m; sourceTree = "<group>"; };
765777
E943E45620C4D90B00AFC4A9 /* CMHConfigureView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMHConfigureView.h; sourceTree = "<group>"; };
766778
E943E45720C4D92800AFC4A9 /* CMHConfigureCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMHConfigureCell.h; sourceTree = "<group>"; };
767779
E943E45920C4F29700AFC4A9 /* CMHExample00ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CMHExample00ViewController.h; sourceTree = "<group>"; };
@@ -2814,13 +2826,13 @@
28142826
E92CC2DB20B3EE96003938F7 /* Architecture */ = {
28152827
isa = PBXGroup;
28162828
children = (
2829+
E932AACA20B6779400C99B3C /* HomePage */,
2830+
E932AACF20B68D3C00C99B3C /* MainFrame */,
2831+
E932AAD120B68D5B00C99B3C /* Contacts */,
2832+
E932AAD320B68D7D00C99B3C /* Discover */,
2833+
E932AAD520B68DAE00C99B3C /* Profile */,
28172834
E9263E7E20CEC22B003C8C69 /* Vendor */,
28182835
E92AB25320C6447A0067D0B6 /* Resource */,
2819-
E932AAD520B68DAE00C99B3C /* Profile */,
2820-
E932AAD320B68D7D00C99B3C /* Discover */,
2821-
E932AAD120B68D5B00C99B3C /* Contacts */,
2822-
E932AACF20B68D3C00C99B3C /* MainFrame */,
2823-
E932AACA20B6779400C99B3C /* HomePage */,
28242836
E932AAC220B6605D00C99B3C /* Macros */,
28252837
E932AABB20B65EB300C99B3C /* Utils */,
28262838
E92857CA20B4FA7600A5DF9A /* Other */,
@@ -2948,6 +2960,7 @@
29482960
E932AACF20B68D3C00C99B3C /* MainFrame */ = {
29492961
isa = PBXGroup;
29502962
children = (
2963+
E933662C20D12DBD00B6F51F /* Example07 */,
29512964
E929D84820CA597E001F833E /* Example06 */,
29522965
E92F2FC120C794B5002070C3 /* Example05 */,
29532966
E92AB23B20C541B20067D0B6 /* Example04 */,
@@ -3033,6 +3046,15 @@
30333046
path = Profile;
30343047
sourceTree = "<group>";
30353048
};
3049+
E933662C20D12DBD00B6F51F /* Example07 */ = {
3050+
isa = PBXGroup;
3051+
children = (
3052+
E933662D20D12DD200B6F51F /* CMHExample07ViewController.h */,
3053+
E933662E20D12DD200B6F51F /* CMHExample07ViewController.m */,
3054+
);
3055+
path = Example07;
3056+
sourceTree = "<group>";
3057+
};
30363058
E943E45520C4D87C00AFC4A9 /* Protocol */ = {
30373059
isa = PBXGroup;
30383060
children = (
@@ -3054,18 +3076,18 @@
30543076
E951600620C2807C007224DA /* ViewController */ = {
30553077
isa = PBXGroup;
30563078
children = (
3057-
E951600920C2807C007224DA /* CMHNavigationController.h */,
3058-
E951600C20C2807C007224DA /* CMHNavigationController.m */,
3059-
E951600E20C2807C007224DA /* CMHTabBarController.h */,
3060-
E951600A20C2807C007224DA /* CMHTabBarController.m */,
3079+
E951600820C2807C007224DA /* CMHViewController.h */,
3080+
E951600D20C2807C007224DA /* CMHViewController.m */,
30613081
E951600B20C2807C007224DA /* CMHTableViewController.h */,
30623082
E951600720C2807C007224DA /* CMHTableViewController.m */,
30633083
E92A8F1520CE1EF500EE850F /* CMHCollectionViewController.h */,
30643084
E92A8F1620CE1EF500EE850F /* CMHCollectionViewController.m */,
30653085
E92DFDB120C8EAF500823A4F /* CMHWebViewController.h */,
30663086
E92DFDB220C8EAF500823A4F /* CMHWebViewController.m */,
3067-
E951600820C2807C007224DA /* CMHViewController.h */,
3068-
E951600D20C2807C007224DA /* CMHViewController.m */,
3087+
E951600920C2807C007224DA /* CMHNavigationController.h */,
3088+
E951600C20C2807C007224DA /* CMHNavigationController.m */,
3089+
E951600E20C2807C007224DA /* CMHTabBarController.h */,
3090+
E951600A20C2807C007224DA /* CMHTabBarController.m */,
30693091
);
30703092
path = ViewController;
30713093
sourceTree = "<group>";
@@ -3075,6 +3097,12 @@
30753097
children = (
30763098
E951601E20C284DB007224DA /* CMHObject.h */,
30773099
E951601F20C284DB007224DA /* CMHObject.m */,
3100+
E933662420D0F75E00B6F51F /* MHEXTRuntimeExtensions.h */,
3101+
E933662520D0F75E00B6F51F /* MHEXTRuntimeExtensions.m */,
3102+
E933662320D0F75E00B6F51F /* MHReflection.h */,
3103+
E933662620D0F75F00B6F51F /* MHReflection.m */,
3104+
E933662920D0F86600B6F51F /* NSError+MHModelException.h */,
3105+
E933662A20D0F86700B6F51F /* NSError+MHModelException.m */,
30783106
);
30793107
path = Model;
30803108
sourceTree = "<group>";
@@ -3671,6 +3699,7 @@
36713699
E951601D20C28263007224DA /* CMHExampleCell.m in Sources */,
36723700
261148E51F15416700758DAF /* YYKeychain.m in Sources */,
36733701
E932AAD920B68DCC00C99B3C /* CMHProfileViewController.m in Sources */,
3702+
E933662720D0F75F00B6F51F /* MHEXTRuntimeExtensions.m in Sources */,
36743703
6226374D1E4AC61D007F9360 /* MHTopicFooterView.m in Sources */,
36753704
261309511E97801F0095BE0E /* RACBasicUseController.m in Sources */,
36763705
E92DFDB320C8EAF500823A4F /* CMHWebViewController.m in Sources */,
@@ -3745,6 +3774,7 @@
37453774
623D2A851E5298B30038BB9B /* MHYouKuController.m in Sources */,
37463775
627A95841E49AE5B004A1ED2 /* UIView+MHFrame.m in Sources */,
37473776
6226372D1E4AAB50007F9360 /* MHTopic.m in Sources */,
3777+
E933662820D0F75F00B6F51F /* MHReflection.m in Sources */,
37483778
E92A8F1420CE081800EE850F /* CMHExample16ViewController.m in Sources */,
37493779
E9263E8920CEC245003C8C69 /* XLCardSwitch.m in Sources */,
37503780
622BF5DE1E569E47004DFCA2 /* MHYouKuMediaSummary.m in Sources */,
@@ -3772,6 +3802,7 @@
37723802
260FC4C11EF7812900390A8E /* SUWebViewModel2.m in Sources */,
37733803
2615ECD21EEE919900D6B473 /* SDCycleScrollView.m in Sources */,
37743804
E9263E7920CEBD4F003C8C69 /* CMHWaterfallDetailViewController.m in Sources */,
3805+
E933662B20D0F86700B6F51F /* NSError+MHModelException.m in Sources */,
37753806
E92A8F4520CE8A0C00EE850F /* CMHWaterfall.m in Sources */,
37763807
261133701EF43C60006AE109 /* SUPublicWebController1.m in Sources */,
37773808
E929D85020CA6BBB001F833E /* YYCache+CMHHelper.m in Sources */,
@@ -3791,6 +3822,7 @@
37913822
622BF5DB1E569130004DFCA2 /* MHYouKuMedia.m in Sources */,
37923823
260E2E681EEFBC7800A0A50D /* SUGoodsData.m in Sources */,
37933824
E932AAB720B64B1D00C99B3C /* CMHRefreshFooter.m in Sources */,
3825+
E933662F20D12DD200B6F51F /* CMHExample07ViewController.m in Sources */,
37943826
620B4BFF1E4A1F6200266A72 /* MHDisplayController.m in Sources */,
37953827
E951601320C2807C007224DA /* CMHViewController.m in Sources */,
37963828
6223CEE81E5423B300993A91 /* MHCommentReply.m in Sources */,
Binary file not shown.

‎MHDevelopExample/MHDevelopExample/Architecture/BaseClass/Model/CMHObject.h

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,70 @@
77
// 基类
88

99
#import <Foundation/Foundation.h>
10+
#import <YYModel/YYModel.h>
1011

11-
@interface CMHObject : NSObject
12+
@interface CMHObject : NSObject <YYModel,NSCopying,NSCoding>
13+
14+
/// YYModel - API
15+
/// 将 Json (NSData,NSString,NSDictionary) 转换为 Model
16+
+ (instancetype)modelWithJSON:(id)json;
17+
/// 字典转模型
18+
+ (instancetype)modelWithDictionary:(NSDictionary *)dictionary;
19+
/// json-array 转换为 模型数组
20+
+ (NSArray *)modelArrayWithJSON:(id)json;
21+
22+
23+
/// 将 Model 转换为 JSON 对象
24+
- (id)toJSONObject;
25+
/// 将 Model 转换为 NSData
26+
- (NSData *)toJSONData;
27+
/// 将 Model 转换为 JSONString
28+
- (NSString *)toJSONString;
29+
30+
31+
32+
// Returns the keys for all @property declarations, except for `readonly`
33+
// properties without ivars, or properties on MHObject itself.
34+
/// 返回所有@property声明的属性,除了只读属性,以及属性列表不包括成员变量
35+
+ (NSSet *)propertyKeys;
36+
37+
// A dictionary representing the properties of the receiver.
38+
//
39+
// The default implementation combines the values corresponding to all
40+
// +propertyKeys into a dictionary, with any nil values represented by NSNull.
41+
// This property must never be nil.
42+
@property (nonatomic, copy, readonly) NSDictionary *dictionaryValue;
43+
44+
// Merges the value of the given key on the receiver with the value of the same
45+
// key from the given model object, giving precedence to the other model object.
46+
//
47+
// By default, this method looks for a `-merge<Key>FromModel:` method on the
48+
// receiver, and invokes it if found. If not found, and `model` is not nil, the
49+
// value for the given key is taken from `model`.
50+
- (void)mergeValueForKey:(NSString *)key fromModel:(CMHObject *)model;
51+
52+
// Merges the values of the given model object into the receiver, using
53+
// -mergeValueForKey:fromModel: for each key in +propertyKeys.
54+
//
55+
// `model` must be an instance of the receiver's class or a subclass thereof.
56+
- (void)mergeValuesForKeysFromModel:(CMHObject *)model;
57+
@end
58+
59+
60+
// Implements validation logic for MHObject.
61+
@interface CMHObject (Validation)
62+
63+
// Validates the model.
64+
//
65+
// The default implementation simply invokes -validateValue:forKey:error: with
66+
// all +propertyKeys and their current value. If -validateValue:forKey:error:
67+
// returns a new value, the property is set to that new value.
68+
//
69+
// error - If not NULL, this may be set to any error that occurs during
70+
// validation
71+
//
72+
// Returns YES if the model is valid, or NO if the validation failed.
73+
- (BOOL)validate:(NSError **)error;
1274

1375
@end
76+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /