½ñÌìдÕâÆª²©¿ÍÊÇÏë´ïµ½Å×שÒýÓñµÄ×÷Óã¬ÏëÓë´ó¼Ò½»Á÷Ò»ÏÂ˼Ï룬Ï໥ѧϰ£¬²©ÎÄÖÐÓв»×ãÖ®´¦»¹Íû´ó¼ÒÅúÆÀÖ¸Õý¡£±¾Æª²©¿ÍµÄÄÚÈÝÑØÏ®ÒÔÍù²©¿ÍµÄ·ç¸ñ£¬Ò²ÊÇÒԸɻõΪÖ÷£¬Å¼¶û³¶³¶Ï̵°(¹þ¹þ~²»ºÃºÃ¹¤×÷ÓÖ¿ªÊ¼·¢±í²©¿ÍÀ²~)¡£
ÓÉÓÚ±¾ÈËÏîÄ¿¾ÑéÓÐÏÞ£¬¹ØÓڼܹ¹Éè¼Æ·½ÃæµÄ¶«Î÷Àí½âÓÐÏÞ£¬ÎÒ¸öÈ˶ÔMVVMµÄÀí½âÖ÷ÒªÊÇ½è¼øÓÚ֮ǰµÄÓùýµÄMVCµÄWeb¿ò¼Ü~ÔÚѧУµÄʱºòÓùýThinkPHP¿ò¼Ü£¬ºÍSSH¿ò¼Ü£¬¶¼ÊÇMVCµÄ¼Ü¹¹Ä£Ê½£¬½ñÌìMVVMÓ봫ͳµÄMVC¿ÉνÊǼ«ÎªÏàËÆ£¬Ò²¿ÉÒÔ˵ÊÇÐֵܹØÏµ£¬Ò²¾ÍÊÇÒ»¼ÒÈËÁË¡£
˵µÀ¼Ü¹¹Éè¼ÆºÍÍŶÓÐ×÷£¬Õâ¸ö¶ÔAppµÄ¿ª·¢»¹ÊDZȽÏÖØÒªµÄ¡£¼´Ê¹×÷Ϊһ¸öרҵµÄ°áשÕߣ¬Ç°ÌáÊÇÄãÕâש°áÍê·ÅÔÚÄÄ£¿²»Ö»ÊÇCodeÓпò¼Ü£¬ÆäËûµÄ¶«Î÷¶¼ÊÇÓпò¼ÜµÄ£¬±ÈÈçÇÅÁºµÈµÈÉñÂíµÄ~ÔÚÕâ¶ù¾Í²»ÍùÍâ³¶ÁË¡£Ò»¸öºÃµÄ¹¤³Ì¿ò¼Ü²»½ø¿ÉÒÔÌá¸ßÍŶӵÄÐ×÷ЧÂÊ£¬Í¬Ê±»¹¿ÉÒÔ¼õÉÙ´úÂëµÄÈßÓà¶ÈºÍñîºÏÐÔ£¬ºÏÀíµÄ·Ö¹¤ÓëϵͳµÄ¼Ü¹¹Éè¼ÆÊÇÉÙ²»Á˵ġ£
ÖÁÓÚÍŶÓÐ×÷²»½ö½öÊÇÓÐSVN»òÕßGitÕâЩ°æ±¾¿ØÖƹ¤¾ß¾ÍÐеģ¬ÖÁÓÚÈçºÎÔÚiOS¿ª·¢ÖÐʹÓÃSVN,Çë²Î¿¼Ö®Ç°µÄ²©¿Í£¨iOS¿ª·¢Ö®°æ±¾¿ØÖÆ£¨SVN£©£©¡£Ò»¸öÍŶӿÉÒÔ¸ßЧµÄ¹¤×÷£¬±¾È˾õµÃ½»Á÷ÊÇ×îÎªÖØÒªµÄ£¬ÍŶÓÖеÄÿ¸öÈ˶¼±È½ÏºÍÆø£¬¶øÇÒ½»Á÷ÉÏûÓÐʲôÕϰ£¬½»Á÷ÔÚÍŶÓÖÐ×îÎªÖØÒª¡£ÖÁÓÚSVNÔõôÓã¬ÄǶ¼²»ÊÇʶù£¡
ºÃÁ˽ñÌì¾ÍÒÔÎÒдµÄÒ»¸öDemoÀ´Ç³Ì¸Ò»ÏÂiOS¿ª·¢Öеļܹ¹Éè¼ÆºÍÍŶÓÐ×÷£¬½ñÌìµÄÏ̵°Ïȵ½Õâ¶ù£¬ÇÐÈë½ñÌìµÄ»°Ìâ¡£
ΪÁËд½ñÌìµÄ²©¿ÍÎÒ»¨Á˵ãʱ¼ä×öÁ˸ö¹¤³Ì£¬Õâ¸ö¹¤³Ìºǫ́µÄ½Ó¿ÚÓõÄÐÂÀË΢²©µÄAPIÀ´½øÐвâÊԵģ¬ÔÚ±¾ÎĵĺóÃæÒ²»á¸úÉÏGitHubµÄ·ÖÏíÁ´½Ó¡£OK~˵µÄ¸ß´óÉÏһЩ¾ÍÊÇ£¬ÈÊÕß¼ûÈÊÖÇÕß¼ûÖÇ£¬½»Á÷˼Ï룬¹²Í¬Ñ§Ï°¡£
Ò»¡¢Ð¡×ÃÒ»ÏÂMVVM
ÔÚÕâÄØÒ²²»×¸ÊöʲôÊÇMVC,ÉñÂíÓÖÊÇMVVMÁË,ÔÚ°Ù¶ÈÉϹȸèÒ»ÏÂÒ»×¥Ò»´ó°Ñ£¬ÔÚÕâ¶ù¾Í¼òµ¥µÄÌáÉÏÒ»×ì¡£ÏÂÃæµÄDemoÓõľÍÊÇMVVMµÄ¼Ü¹¹Ä£Ê½¡£
Model²ãÊÇÉÙ²»Á˵ÄÁË£¬ÎÒÃǵÃÓж«Î÷³äµ±DTO(Êý¾Ý´«Êä¶ÔÏó)£¬µ±È»£¬ÓÃ×ÖµäÒ²ÊÇ¿ÉÒԵ쬱à³Ìô£¬ÒªÁé»îһЩ¡£Model²ãÊDZȽϱ¡µÄÒ»²ã£¬Èç¹ûѧ¹ýJavaµÄС»ï°éµÄ»°£¬¶ÔJavaBeanÓ¦¸Ã²»Ä°Éú°É¡£
ViewModel²ã£¬¾ÍÊÇViewºÍModel²ãµÄÕ³ºÏ¼Á£¬ËûÊÇÒ»¸ö·ÅÖÃÓû§ÊäÈëÑéÖ¤Âß¼£¬ÊÓͼÏÔʾÂß¼£¬·¢ÆðÍøÂçÇëÇóºÍÆäËû¸÷ÖÖ¸÷ÑùµÄ´úÂëµÄ¼«ºÃµÄµØ·½¡£Ëµ°×ÁË£¬¾ÍÊǰÑÔÀ´ViewController²ãµÄÒµÎñÂß¼ºÍÒ³ÃæÂß¼µÈ°þÀë³öÀ´·Åµ½ViewModel²ã¡£
View²ã£¬¾ÍÊÇViewController²ã£¬ËûµÄÈÎÎñ¾ÍÊÇ´ÓViewModel²ã»ñÈ¡Êý¾Ý£¬È»ºóÏÔʾ¡£
ÉÏÃæ¶ÔMVVM¾ÍÏȼòµ¥µÄÕâôһ˵£¬ºÃºÃµÄÀí½â²¢Ó¦Óõϰ£¬»¹µÃʵս¡£
¶þ¡¢¹ØÓÚ¹¤³ÌÖÐÊÇ·ñʹÓÃStoryBoardµÄÂÛÊö
´ÓÍøÉϾ³£¿´µ½Ëµ²»ÍƼöʹÓÃStoryBoard»òÕßXib,ÍÆ¼öÓô¿´úÂëÊÖд¡£¸öÈËÈÏΪÕâÖÖ¹ÛµãÊÇºÍÆ»¹ûÉè¼ÆStoryBoardµÄ³õÖÔÏà㣵ģ¬ÔÚÎÒ×ö¹ýµÄÏîÄ¿ÖÐÊÇÒÔStoryBoardΪÖ÷£¬xibΪ¸¨£¬È»ºóÓôúÂëÕûºÏÿ¸öStoryBoard.
¾ÙÒ»¸öÓÃStoryboardºÃ´¦µÄÀý×Ó¾ÍOKÁË£¬¸ø¿Ø¼þÌí¼ÓÔ¼Êø£¬Èç¹ûÓÃStoryboardÍê³ÉÄÇÊÇ·Ö·ÖÃëµÄÊÂÇ飬¶øÓôúÂëµÄÌí¼ÓÔ¼ÊøµÄ»°ÊǺεȵĶñÐÄ£¬´¿´úÂëдµÄ»°»á°Ñ´óÁ¿µÄʱ¼ä»¨ÔÚдUIÉÏ£¬¶øÇÒ¼¼Êõº¬Á¿ÊDZȽϵ͵ģ¬Õâ¸ö¸öÈËÈÏΪûʲô±ØÒª¡£ÔÚÍŶӺÏ×÷ÖиºÔðUI¿ª·¢µÄС»ï°éÖ»ÐèûÈ˸ºÔðÒ»¸öStoryboard,¸÷¿ª·¢¸÷µÄ£¬ÓÃSVNÌύʱ°ÑÏÂÃæµÄ¹´£¨ÈçÏÂͼ£©È¥µô¼´¿É£¬ÕâÑùÓÃStoryboardÊÇûÓÐÎÊÌâµÄ¡£È»ºóÔÙÓôúÂë½øÐÐÕûºÏ¾ÍOKÁË¡£Èç¹ûÄãÔÚÄãµÄ¹¤³ÌÖмÓÈëÁËеÄ×ÊÔ´ÎļþµÄ»°£¬ÓÃXCode×Ô´øµÄSVNÌá½»µÄ»°ÐèÒª°ÉProject
SettingÎļþÒ»²¢Ìá½»¡£

Èý¡¢ÊµÕ½MVVM
£¨ÓÃXcode´´½¨µÄGroupÊÇÐéÄâµÄÎļþ¼Ð£¬ÎªÁ˱ãÓÚά»¤£¬½¨Òé´´½¨ÎïÀíÎļþ¼Ð£¬È»ºóÔÙÊÖ¶¯ÒýÈ룩
1.ÏÂÃæÍ¨¹ýÒ»¸öʵÀýÀ´Ìå»áÒ»ÏÂMVVM¼Ü¹¹Ä£Ê½£¬ÏÂÃæÊǸù¤³ÌµÄÒ»¼¶Ä¿Â¼ÈçÏ£¬Ã¿²ãÖ®¼äµÄ½»»¥ÊÇÓÃBlockµÄÐÎʽÀ´ÊµÏÖµÄ

¹¤³ÌĿ¼˵Ã÷£º
1.Request:Îļþ¼ÐÏÂ´æ´¢ÍøÂçÇëÇóµÄÀ࣬ÏÂÃæ»á¸ø³ö¾ßÌåµÄʵÏÖ
2.Config:¾ÍÊǹ¤³ÌµÄÅäÖÃÎļþ
3.Resource:¾ÍÊǹ¤³ÌµÄ×ÊÔ´Îļþ£¬ÏÂÃæÓÐͼƬ×ÊÔ´ºÍStoryboardÎļþ×ÊÔ´
4.ToolsÊÇ:¹¤¾ßÎļþÀ࣬´æ·Å¹¤¾ßÀ࣬±ÈÈçÊý¾ÝÕýÔòÆ¥ÅäµÈ¡£
5.Vender:´æ·ÅµÚÈý·½Àà¿â
6.Model:Õâ¸ö¾Í²»¶à˵ÁË
7.ViewController:´æ·ÅViewControllerÀà×ÊÔ´Îļþ£¬Ò²¾ÍÊÇView²ã
8.ViewModel£º´æ·Å¸÷ÖÖÒµÎñÂß¼ºÍÍøÂçÇëÇó
2.Ïê½âRequest:Request¸ºÔðÍøÂçÇëÇóµÄ¶«Î÷£¬¾ßÌåÈçÏ£º

NetRequestClassÊÇ´æ·ÅÍøÂçÇëÇóµÄ´úÂ룬±¾¹¤³ÌÓõÄAF£¬ÒòΪ±¾¹¤³ÌÖ»ÊÇÒ»¸öDemo,ËùÒÔ¾ÍÖ»·â×°Á˼à²âÍøÂç״̬£¬GETÇëÇó£¬POSTÇëÇó·½·¨£¬¸ù¾ÝÏÖʵÐèÒª£¬»¹¿ÉÒÔ·â×°ÉÏ´«ÏÂÔØµÈÀà·½·¨¡£
NetRequestClass.hÖеĴúÂëÈçÏ£º
// NetRequestClass.h 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/6. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface NetRequestClass : NSObject 12 13 #pragma ¼à²âÍøÂçµÄ¿ÉÁ´½ÓÐÔ 14 + (BOOL) netWorkReachabilityWithURLString:(NSString *) strUrl; 15 16 #pragma POSTÇëÇó 17 + (void) NetRequestPOSTWithRequestURL: (NSString *) requestURLString 18 WithParameter: (NSDictionary *) parameter 19 WithReturnValeuBlock: (ReturnValueBlock) block 20 WithErrorCodeBlock: (ErrorCodeBlock) errorBlock 21 WithFailureBlock: (FailureBlock) failureBlock; 22 23 #pragma GETÇëÇó 24 + (void) NetRequestGETWithRequestURL: (NSString *) requestURLString 25 WithParameter: (NSDictionary *) parameter 26 WithReturnValeuBlock: (ReturnValueBlock) block 27 WithErrorCodeBlock: (ErrorCodeBlock) errorBlock 28 WithFailureBlock: (FailureBlock) failureBlock; 29 30 @end |
NetRequestClass.mÖеĴúÂëÈçÏ£º
// NetRequestClass.m 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/6. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import "NetRequestClass.h" 10 11 @interface NetRequestClass () 12 13 @end 14 15 16 @implementation NetRequestClass 17 #pragma ¼à²âÍøÂçµÄ¿ÉÁ´½ÓÐÔ 18 + (BOOL) netWorkReachabilityWithURLString:(NSString *) strUrl 19 { 20 __block BOOL netState = NO; 21 22 NSURL *baseURL = [NSURL URLWithString:strUrl]; 23 24 AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; 25 26 NSOperationQueue *operationQueue = manager.operationQueue; 27 28 [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 29 switch (status) { 30 case AFNetworkReachabilityStatusReachableViaWWAN: 31 case AFNetworkReachabilityStatusReachableViaWiFi: 32 [operationQueue setSuspended:NO]; 33 netState = YES; 34 break; 35 case AFNetworkReachabilityStatusNotReachable: 36 netState = NO; 37 default: 38 [operationQueue setSuspended:YES]; 39 break; 40 } 41 }]; 42 43 [manager.reachabilityManager startMonitoring]; 44 45 return netState; 46 } 47 48 49 /*************************************** 50 ÔÚÕâ×öÅжÏÈç¹ûÓÐdicÀïÓÐerrorCode 51 µ÷ÓÃerrorBlock(dic) 52 ûÓÐerrorCodeÔòµ÷ÓÃblock(dic 53 ******************************/ 54 55 #pragma --mark GETÇëÇó·½Ê½ 56 + (void) NetRequestGETWithRequestURL: (NSString *) requestURLString 57 WithParameter: (NSDictionary *) parameter 58 WithReturnValeuBlock: (ReturnValueBlock) block 59 WithErrorCodeBlock: (ErrorCodeBlock) errorBlock 60 WithFailureBlock: (FailureBlock) failureBlock 61 { 62 AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init]; 63 64 AFHTTPRequestOperation *op = [manager GET:requestURLString
parameters:parameter success:^(AFHTTPRequestOperation *operation, id responseObject) { 65 NSDictionary *dic = [NSJSONSerialization
JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; 66 DDLog(@"%@", dic); 67 68 block(dic); 69 70 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 71 failureBlock(); 72 }]; 73 74 op.responseSerializer = [AFHTTPResponseSerializer serializer]; 75 76 [op start]; 77 78 } 79 80 #pragma --mark POSTÇëÇó·½Ê½ 81 82 + (void) NetRequestPOSTWithRequestURL: (NSString *) requestURLString 83 WithParameter: (NSDictionary *) parameter 84 WithReturnValeuBlock: (ReturnValueBlock) block 85 WithErrorCodeBlock: (ErrorCodeBlock) errorBlock 86 WithFailureBlock: (FailureBlock) failureBlock 87 { 88 AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] init]; 89 90 AFHTTPRequestOperation *op = [manager POST:requestURLString
parameters:parameter success:^(AFHTTPRequestOperation *operation, id responseObject) { 91 NSDictionary *dic = [NSJSONSerialization
JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; 92 93 DDLog(@"%@", dic); 94 95 block(dic); 96 /*************************************** 97 ÔÚÕâ×öÅжÏÈç¹ûÓÐdicÀïÓÐerrorCode 98 µ÷ÓÃerrorBlock(dic) 99 ûÓÐerrorCodeÔòµ÷ÓÃblock(dic 100 ******************************/ 101 102 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 103 failureBlock(); 104 }]; 105 106 op.responseSerializer = [AFHTTPResponseSerializer serializer]; 107 108 [op start]; 109 110 } 111 112 113 114 115 @end |
3.Ïê½âConfig:´´½¨pchÎļþ£¬ºÍConfig.hÎļþ

pchÎļþÒýÈë³£ÓõÄÍ·Îļþ£¬ÄÚÈÝÈçÏ£º
// PrefixHeader.pch 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/6. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #ifndef MVVMTest_PrefixHeader_pch 10 #define MVVMTest_PrefixHeader_pch 11 12 #import"AFNetworking.h" 13 #import "UIKit+AFNetworking.h" 14 #import "Config.h" 15 16 #import "NetRequestClass.h" 17 #import "SVProgressHUD.h" 18 #endif |
Config.hÖоÍÊǸ÷Öֺ궨ÒåºÍ¸÷ÖÖö¾ÙÀàÐͺÍblockÀàÐÍ£¬´úÂëÈçÏ£º
// Config.h 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/6. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #ifndef MVVMTest_Config_h 10 #define MVVMTest_Config_h 11 12 //¶¨Òå·µ»ØÇëÇóÊý¾ÝµÄblockÀàÐÍ 13 typedef void (^ReturnValueBlock) (id returnValue); 14 typedef void (^ErrorCodeBlock) (id errorCode); 15 typedef void (^FailureBlock)(); 16 typedef void (^NetWorkBlock)(BOOL netConnetState); 17 18 #define DDLog(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) 19 20 //accessToken 21 #define ACCESSTOKEN @"Äã×Ô¼ºµÄaccess_token" 22 23 //ÇëÇ󹫹²Î¢²©µÄÍøÂç½Ó¿Ú 24 #define REQUESTPUBLICURL @"https://api.weibo.com/2/statuses/public_timeline.json" 25 26 #define SOURCE @"source" 27 #define TOKEN @"access_token" 28 #define COUNT @"count" 29 30 #define STATUSES @"statuses" 31 #define CREATETIME @"created_at" 32 #define WEIBOID @"id" 33 #define WEIBOTEXT @"text" 34 #define USER @"user" 35 #define UID @"id" 36 #define HEADIMAGEURL @"profile_image_url" 37 #define USERNAME @"screen_name" 38 39 #endif |
4.Ïê½â×ÊÔ´ÎļþResource£¬½á¹¹ÈçÏÂͼ£º

ImageÖоʹæ·Å¸÷ÖÖͼƬ£¨3x,2xµÈ£©£¬InterfaceBuiderÀïÃæ¾ÍÊÇ·ÅһЩXibºÍStoryboardÎļþ£¬Ã¿¸ö¸ºÔðUIµÄ¿ª·¢ÈËÔ±¸ºÔðÒ»¸öStoryboard
5.Ïê½âModel:±¾¹¤³ÌÓõÄÊÇÇëÇ󹫹²Î¢²©½Ó¿ÚÎÒÃÇÐèÒªÔÚÒ³ÃæÉÏÏÖʵÓû§µÄÍ·Ïñ£¬Óû§Ãû£¬·¢²¼ÈÕÆÚ£¬²©ÎÄ£¬ÒѾÒþʽµÄÓû§IDºÍ΢²©ID,ÎļþĿ¼½á¹¹ÈçÏ£º

PublicModelÖеÄÄÚÈÝÈçÏ£º
// PublicModel.h 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/8. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface PublicModel : NSObject 12 @property (strong, nonatomic) NSString *userId; 13 @property (strong, nonatomic) NSString *weiboId; 14 @property (strong, nonatomic) NSString *userName; 15 @property (strong, nonatomic) NSURL *imageUrl; 16 @property (strong, nonatomic) NSString *date; 17 @property (strong, nonatomic) NSString *text; 18 19 @end |
6.Ïê½âViewModel²ã£¬±¾²ãÊÇ×îÎªÖØÒªµÄÒ»²ã£¬ÏÂÃæÊDZ¾²ãµÄÏêϸ½ØÍ¼£¬ViewModeClassÊÇËùÓÐViewModeµÄ¸¸À࣬ÆäÖд洢׏²Í¬²¿·Ö

ViewModelClass.hÖеÄÄÚÈÝÈçÏ£º
// ViewModelClass.h 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/8. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface ViewModelClass : NSObject 12 13 @property (strong, nonatomic) ReturnValueBlock returnBlock; 14 @property (strong, nonatomic) ErrorCodeBlock errorBlock; 15 @property (strong, nonatomic) FailureBlock failureBlock; 16 17 18 //»ñÈ¡ÍøÂçµÄÁ´½Ó״̬ 19 -(void) netWorkStateWithNetConnectBlock: (NetWorkBlock) netConnectBlock WithURlStr: (NSString *) strURl; 20 21 // ´«Èë½»»¥µÄBlock¿é 22 -(void) setBlockWithReturnBlock: (ReturnValueBlock) returnBlock 23 WithErrorBlock: (ErrorCodeBlock) errorBlock 24 WithFailureBlock: (FailureBlock) failureBlock; 25 @end |
ViewModelClass.mÖеÄÄÚÈÝÈçÏ£º
// ViewModelClass.m 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/8. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import "ViewModelClass.h" 10 @implementation ViewModelClass 11 12 #pragma »ñÈ¡ÍøÂç¿Éµ½´ï״̬ 13 -(void) netWorkStateWithNetConnectBlock: (NetWorkBlock) netConnectBlock WithURlStr: (NSString *) strURl; 14 { 15 BOOL netState = [NetRequestClass netWorkReachabilityWithURLString:strURl]; 16 netConnectBlock(netState); 17 } 18 19 #pragma ½ÓÊÕ´©¹ýÀ´µÄblock 20 -(void) setBlockWithReturnBlock: (ReturnValueBlock) returnBlock 21 WithErrorBlock: (ErrorCodeBlock) errorBlock 22 WithFailureBlock: (FailureBlock) failureBlock 23 { 24 _returnBlock = returnBlock; 25 _errorBlock = errorBlock; 26 _failureBlock = failureBlock; 27 } 28 29 @end |
PublicWeiboViewModel.hÖеÄÄÚÈÝÈçÏ£º
// PublicWeiboViewModel.h 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/8. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import "ViewModelClass.h" 10 #import "PublicModel.h" 11 12 @interface PublicWeiboViewModel : ViewModelClass 13 //»ñȡΧ²±Áбí 14 -(void) fetchPublicWeiBo; 15 16 //Ìø×ªµ½Î¢²©ÏêÇéÒ³ 17 -(void) weiboDetailWithPublicModel: (PublicModel *) publicModel WithViewController: (UIViewController *)superController; 18 @end |
PublicWeiboViewModel.mÖеÄÄÚÈÝÈçÏ£º
// PublicWeiboViewModel.m 3 // MVVMTest 4 // 5 // Created by ÀîÔó³ on 15/1/8. 6 // Copyright (c) 2015Äê ÀîÔó³. All rights reserved. 7 // 8 9 #import "PublicWeiboViewModel.h" 10 #import "PublicDetailViewController.h" 11 12 @implementation PublicWeiboViewModel 13 14 //»ñÈ¡¹«¹²Î¢²© 15 -(void) fetchPublicWeiBo 16 { 17 NSDictionary *parameter = @{TOKEN: ACCESSTOKEN, 18 COUNT: @"100" 19 }; 20 [NetRequestClass NetRequestGETWithRequestURL:REQUESTPUBLICURL
WithParameter:parameter WithReturnValeuBlock:^(id returnValue) { 21 22 DDLog(@"%@", returnValue); 23 [self fetchValueSuccessWithDic:returnValue]; 24 25 } WithErrorCodeBlock:^(id errorCode) { 26 DDLog(@"%@", errorCode); 27 [self errorCodeWithDic:errorCode]; 28 29 } WithFailureBlock:^{ 30 [self netFailure]; 31 DDLog(@"ÍøÂçÒì³£"); 32 33 }]; 34 35 } 36 37 38 39 #pragma »ñÈ¡µ½ÕýÈ·µÄÊý¾Ý£¬¶ÔÕýÈ·µÄÊý¾Ý½øÐд¦Àí 40 -(void)fetchValueSuccessWithDic: (NSDictionary *) returnValue 41 { 42 //¶Ô´Óºǫ́»ñÈ¡µÄÊý¾Ý½øÐд¦Àí£¬È»ºó´«¸øViewController²ã½øÐÐÏÔʾ 43 44 NSArray *statuses = returnValue[STATUSES]; 45 NSMutableArray *publicModelArray = [[NSMutableArray alloc] initWithCapacity:statuses.count]; 46 47 for (int i = 0; i < statuses.count; i ++) { 48 PublicModel *publicModel = [[PublicModel alloc] init]; 49 50 //ÉèÖÃʱ¼ä 51 NSDateFormatter *iosDateFormater=[[NSDateFormatter alloc]init]; 52 iosDateFormater.dateFormat=@"EEE MMM d HH:mm:ss Z yyyy"; 53 54 //±ØÐëÉèÖ㬷ñÔòÎÞ·¨½âÎö 55 iosDateFormater.locale=[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]; 56 NSDate *date=[iosDateFormater dateFromString:statuses[i][CREATETIME]]; 57 58 //Ä¿µÄ¸ñʽ 59 NSDateFormatter *resultFormatter=[[NSDateFormatter alloc]init]; 60 [resultFormatter setDateFormat:@"MMÔÂddÈÕ HH:mm"]; 61 62 publicModel.date = [resultFormatter stringFromDate:date]; 63 publicModel.userName = statuses[i][USER][USERNAME]; 64 publicModel.text = statuses[i][WEIBOTEXT]; 65 publicModel.imageUrl = [NSURL URLWithString:statuses[i][USER][HEADIMAGEURL]]; 66 publicModel.userId = statuses[i][USER][UID]; 67 publicModel.weiboId = statuses[i][WEIBOID]; 68 69 [publicModelArray addObject:publicModel]; 70 71 } 72 73 self.returnBlock(publicModelArray); 74 } 75 76 #pragma ¶ÔErrorCode½øÐд¦Àí 77 -(void) errorCodeWithDic: (NSDictionary *) errorDic 78 { 79 self.errorBlock(errorDic); 80 } 81 82 #pragma ¶ÔÍøÂ·Òì³£½øÐд¦Àí 83 -(void) netFailure 84 { 85 self.failureBlock(); 86 } 87 88 89 #pragma Ìø×ªµ½ÏêÇéÒ³Ãæ£¬ÈçÐèÍøÂ·ÇëÇóµÄ£¬¿ÉÔÚ´Ë·½·¨ÖÐÌí¼ÓÏàÓ¦µÄÍøÂçÇëÇó 90 -(void) weiboDetailWithPublicModel: (PublicModel *)
publicModel WithViewController:(UIViewController *)superController 91 { 92 DDLog(@"%@,%@,%@",publicModel.userId,publicModel.weiboId,publicModel.text); 93 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 94 PublicDetailViewController *detailController =
[storyboard instantiateViewControllerWithIdentifier:@"PublicDetailViewController"]; 95 detailController.publicModel = publicModel; 96 [superController.navigationController pushViewController:detailController animated:YES]; 97 98 } 99 100 101 @end |
7.ViewController²ãµÄĿ¼½á¹¹ÈçÏ£º

ÉÏÃæµÄ´úÂë¾Í²»Ò»Ò»Õ³ÁË£¨Ö÷ÒªÊÇÊÖ°´command + C °´ÀÛÁË£©£¬ºóÃæµÄÁ´½Ó»áÓÐÔ´Âë
8.storybordÖеĽṹÈçÏ£º

ÔËÐеÄ×îÖÕЧ¹û£º

9.ÍêÕûĿ¼½á¹¹£¬Ò³Ãæ¼äµÄÒµÎñÂß¼£¬ºÍÍøÂçµÄÇëÇóÊý¾ÝÊÇ·ÅÔÚViewModel²ãµÄ£¬µ±È»ÁËÕâÒ²²»ÊǾø¶ÔµÄ£¬ÒªÁé»î°ÑÎÕ¡£ÎÒ¸öÈËÊÇÌØ±ðϲ»¶±à³ÌµÄ£¬ÒòΪ±à³ÌÁé»îÆðÀ´¾Í»áºÜÓÐÀÖȤ¡£

10.²©ÎÄ¿ì½áÊøÁË£¬ÔÚÕâ¶ùÔÚ×ܽáÒ»ÏÂSVNʹÓÃÆµÂʱȽϸߵĶøÇұȽÏÖØÒªµÄÃüÁî°É£¨µ±È»£¬±¾ÈËÆ½Ê±Ö÷ÒªÊÇÓÃXCode×Ô´øµÄSVN¿ÉÊÓ»¯¹ÜÀí~£©
£¨1£©¡¢¸üб¾µØ´úÂëÃüÁî
1.1 svn up ¸üа汾
1.2 svn info ²é¿´µ±Ç°°æ±¾ÐÅÏ¢
£¨2£©¡¢´úÂëµÄÌá½»
2.1 svn info ²é¿´µ±Ç°±¾µØ°æ±¾ÐÅÏ¢
2.2 svn up ¸üе½×îа汾ÐÅÏ¢
2.3 svn st ²é¿´Îļþ״̬ M-ÐÞ¸Ä D-ɾ³ý A-Ìí¼Ó U-¸üР?-δ֪״̬
!-¾¯¸æ C-³åÍ»
2.4 svn add fileName: Èç¹û³öÏÖ£¿Ò»°ãÊÇÌí¼ÓÎļþʱ³öµÄÎÊÌ⣬ÔÚ°ÑÎļþsvn
add fileNameһϺ󣬸ÃÎļþµÄ״̬»á¸Ä³ÉA
2.5 svn del fileName:Èç¹û³öÏÖ£¡Ò»°ãÊÇɾ³ýÎļþʱ»á³öÏֵľ¯¸æÐèѽִÐÐsvn
del fileNameÃüÁîºó£¬¸ÃÎļþµÄ״̬»á¸Ä³ÉD
2.6 svn ci -m"Ìá½»µÄÔÒò"
|