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