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中~