iOS-NSDictionary/NSMutableDictionary新用法之“是”與”否“,開關控制器,NSUserDefaults 簡單開關應用。,iosnsuserdefaults

來源:互聯網
上載者:User

iOS-NSDictionary/NSMutableDictionary新用法之“是”與”否“,開關控制器,NSUserDefaults 簡單開關應用。,iosnsuserdefaults

  iAronTalk Blog opens.

   Not matter of the today will drag tomorrow.

-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  NSDictionary(字典)是Objective-C中用於"集合"資料,它可以將資料以索引值對兒的形式儲存起來,取值的時候通過KEY就可以直接拿到對應的值,非常方便。同一個詞典對象中可以儲存多個不同類型的資料,不像Java與C 只能儲存聲明的相同類型的資料。

  眾所周知的NSDictionary是個承裝資料的匣子,而”它“還是switch(開關),下面就讓我們來看看它如何發揮自身的特性成為一個”開關“。下面通過一個例子來呈現NSDictionary的”開關“特性,需要說明的是,字典初始化NSDictionary *switchDic = [[NSDictionary alloc] init];,在不給設定初值前,字典內容為空白。

  參照本文思想很多關鍵字都可以完成開關功能,例如NSUserDefault,相比大家都還知道每款App初次使用的動畫(滑動視圖),在第二次使用的App的時候不翼而飛了,該功能即可用此思想實現,請看”報道“。

  下面是例1:(應用背景:評論欄的收齊和展開)

  

#import "BaseViewController.h"@interface TopDetailViewController : BaseViewController<UITableViewDataSource,UITableViewDelegate>{    UITableView *_tableView;//評論欄的表視圖    NSMutableDictionary *_foldSwitch;//定義的收齊展開開關}@end
@implementation TopDetailViewController- (void)viewDidLoad {    [super viewDidLoad];    _foldSwitch = [[NSMutableDictionary alloc]init];}#pragma mark - 選中儲存格展開儲存格- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSString *key = [NSString stringWithFormat:@"%d",indexPath.row];//把選中的儲存格下標作為字典的一個key    BOOL isShow = [[_foldSwitch objectForKey:key]boolValue];            ;//建立的字典為空白,isShow為NO.    [_foldSwitch setObject:@(!isShow) forKey:key];//選中儲存格後,改變_foldSwitch的狀態,此時選中儲存格下標key對應的value為:@(YES).    //此行代碼尤為重要,重新整理選中的那行儲存格,才會調用下面的方法。        [_tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];  }#pragma -mark -表視圖設定儲存格高度調用的方法- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    //擷取當前選中的儲存格下標,作為字典的key或許對應的值,由於在上一個協議方法中我們將_foldSwitch中key對應的value設為:@(YES),故此時isSshow為YES    NSString *key = [NSString stringWithFormat:@"%i",indexPath.row];    BOOL isShow = [[_foldSwitch objectForKey:key]boolValue];        if (isShow == YES) {    //這裡填寫展開的相關代碼      }else{    //這裡填寫收齊的相關代碼         }}@end

  例2:(應用情境:首次使用App,開機動畫的一次性顯示,以後開啟App,動畫不在顯示)

 

  

 1 #import "RootTabBarController.h" 2  3 @implementation RootTabBarController 4  5      //建立小資料的本機存放區對象 6        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 7       //擷取當前是否為第一次啟動,若為第一次啟動,firstInit為NO.  8       BOOL firstInit = [[userDefaults objectForKey:@"firstInit"]boolValue]; 9       if (firstInit == NO) {10         [self _initFirstView];//載入動畫方法11           //改變firstInit的值為YES,今後不在載入動畫。12           [userDefaults setObject:@YES forKey:@"firstInit"];13           //建議同步儲存到磁碟中,但不是必須14           [userDefaults synchronize];15        }

 

  由於編者水平有限,不妥之處在所難免,懇請各個大牛批評指正,提出寶貴建議。

  著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.