// 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中设计模式的实现有不一样的形式。下面部分中描述的一些设计—好比协议和范畴—是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中去的,NSUserDefaults中的value只能是NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary。若是你想保存自定义的类,那么该类必需要实现NSCoding协议,并将该类转换成NSData,才能保持到NSUserDefaults中~编程