nsdata

NSData NSDate NSString NSArray NSDictionary 相互轉換,nsdatansdate

 

//    NSData  NSDate NSString NSArray NSDictionary json
    
    
    NSString *string = @"hello word";
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
    NSString *dateString = @"19891123";
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:
                         @"hello", @"word",
                         @"chen", @"lu",
                         @"jin", @"mei",
                         @"cerastes", @"hehe",nil];

//    NSString to NSData
    NSData *string2data = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSLog(@"%@",string2data);
//    NSData to NSString
    NSString *data2String = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"dataString = %@",data2String);
    
//    NSArray to NSData
    
    NSData *arry2data = [NSKeyedArchiver archivedDataWithRootObject:array];
//    NSData to NSArray
    NSArray *data2arry = [NSKeyedUnarchiver unarchiveObjectWithData:arry2data];
    NSLog(@"%@  /n %@",arry2data,data2arry);
    
//    NSString to NSDate
    NSDate *string2date = [self convertDateFromString:dateString withFormattre:@"yyyyMMdd"];
    NSLog(@"date = %@",string2date);
    
//    NSDate to NSString
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *date2string = [dateFormatter stringFromDate:[NSDate date]];
    NSLog(@"%@", date2string);
    

//   NSArray to NSString
    
    
    NSString *arry2String = [array componentsJoinedByString:@" "];
    
    NSLog(@"string = %@",arry2String);
    
    
//    NSString to NSArray
    NSArray *string2Arry = [arry2String componentsSeparatedByString:@" "];
    NSLog(@" %@",string2Arry);
    

    
//    NSDictionary to NSData:
    NSMutableData *dic2data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:dic2data];
    [archiver encodeObject:dic forKey:@"Some Key Value"];
    [archiver finishEncoding];
    NSLog(@"%@",dic2data);
    
//    NSData to NSDictionary
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:dic2data];
    NSDictionary *data2dic = [unarchiver decodeObjectForKey:@"Some Key Value"];
    [unarchiver finishDecoding];
    NSLog(@"%@",data2dic);
    
    
//    NSDictionary to NSString
    NSString *dic2string=[dic JSONRepresentation]; //這個方法是SBJson類庫裏的,須要導入SBJson.h
    NSLog(@"%@",dic2string);
    
//    NSString to NSDictionary
    NSError *error = nil;
    NSDictionary *string2dic = [NSJSONSerialization JSONObjectWithData: [dic2string dataUsingEncoding:NSUTF8StringEncoding]
                                    options: NSJSONReadingMutableContainers
                                      error: &error];
    NSLog(@"%@",string2dic);




Cocoa怎應用設計模式解答

 

Cocoa常常把本身不同凡響的工做機制創建在模式上,它的設計受到諸如語言能力或現有架構這樣因素的影響。 本部分包含設計模式:可重用的面向對象軟件的元素一書中編目的大多數設計模式的介紹。每一個設計模式都有一個總結性的描述,以及該模式的Cocoa實現的討論。文中列出的都是Cocoa實現的模式,每一個模式的討論都發生在特定的Cocoa環境中。咱們推薦您熟悉這些模式,您會發現這些模式在Cocoa軟件開發中很是有用。 Cocoa中設計模式的實現有不一樣的形式。下面部分中描述的一些設計—好比協議和範疇—是Objective-C語言的特性;在另一些場合中,「模式的實例」被實現爲一個類或一組相關的類(好比類簇和單件類);還有一些場合下,模式表現爲一個大的框架結構,好比響應者鏈模式。對於某些基於模式的機制,您幾乎能夠「免費」使用;而另一些機制則要求您作一些工做。即便對於Cocoa沒有實現的模式,咱們也鼓勵您在條件許可的狀況下自行實現,好比在擴展類的行爲時,對象合成(裝飾模式)技術一般就比生成子類更好。 有兩個設計模式沒有在下面的內容中進行討論,即模型-視圖-控制器(MVC)模式和對象建模。MVC是一種複合或聚合模式,就是說它基於幾種不一樣類型的模式。對象建模在四人組的分類目錄中沒有對應類別,它源自關係數據庫領域。然而,MVC和對象建模在Cocoa中多是最重要和最廣泛的設計模式或用語,並且它們在很大程度上是相關的。它們在幾個技術的設計中發揮關鍵的做用,包括綁定、撤消管理、腳本控制、和文檔架構。要了解更多有關這些模式的信息,請參見"模型-視圖-控制器設計模式"和"對象建模"部分。 本部分包含以下主要內容:抽象工廠模式適配器模式責任鏈模式命令模式合成模式裝飾模式表觀模式跌代器模式仲裁者模式備忘錄模式觀察者模式代理模式單件模式模板方法模式 抽象工廠模式提供一個接口,用於建立與某些對象相關或依賴於某些對象的類家族,而又不須要指定它們的具體類。經過這種模式能夠去除客戶代碼和來自工廠的具體對象細節之間的耦合關係。 類簇類簇是一種把一個公共的抽象超類下的一些私有的具體子類組合在一塊兒的架構。抽象超類負責聲明建立私有子類實例的方法,會根據被調用方法的不一樣分配恰當的具體子類,每一個返回的對象均可能屬於不一樣的私有子類。 Cocoa將類簇限制在數據存儲可能因環境而變的對象生成上。Foundation框架爲NSString、NSData、NSDictionary、NSSet、和NSArray對象定義了類簇。公共超類包括上述的不可變類和與其相互補充的可變類NSMutableString、NSMutableData、NSMutableDictionary、NSMutableSet、和NSMutableArray。 使用和限制 當您但願建立類簇表明的類型的可變或不可變對象時,可使用類簇中的某個公共類來實現。使用類簇是在簡潔性和擴展性之間進行折衷。類簇能夠簡化類接口,所以使其更易於學習和使用,可是建立類簇抽象類的定製子類則會變得更加困難。進一步閱讀: "類簇" 部分提供有關Cocoa類簇的更多信息。 適配器模式將一個類接口轉化爲客戶代碼須要的另外一個接口。適配器使本來因爲兼容性而不能協同工做的類能夠工做在一塊兒,消除了客戶代碼和目標對象的類之間的耦合性。 協議協議是一個編程語言級別(Objective-C)的特性,它使定義適配器模式的實例成爲可能(在 Java中的「接口」和「協議」是同義的)。若是您但願一個客戶對象和另外一個對象進行交流,但因爲它們......餘下全文>>
 數據庫

NSIndexPath怎保存到NSUserDefaults裏

 

NSIndexPath是沒法直接存儲到NSUserDefaults中去的,NSUserDefaults中的value只能是NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary。若是你想保存自定義的類,那麼該類必需要實現NSCoding協議,並將該類轉換成NSData,才能保持到NSUserDefaults中~編程

相關文章
相關標籤/搜索