Objective-C处理空字符串和页面传值及自定义拷贝
空字符串
在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,比如null,(null),<null>。
如果单纯用
string!=nil;
无法判断出尖括号的空串
完整判断方法
-(BOOL)isNull:(id)object { //判断是否为空串 if([objectisEqual:[NSNullnull]]){ returnNO; } elseif([objectisKindOfClass:[NSNullclass]]) { returnNO; } elseif(object==nil){ returnNO; } returnYES; }
对空串进行发消息会出现各种各样的崩溃,让人很无语,同理转换字符串
-(NSString*)convertNull:(id)object{ //转换空串 if([objectisEqual:[NSNullnull]]){ return@""; } elseif([objectisKindOfClass:[NSNullclass]]) { return@""; } elseif(object==nil){ return@"无"; } returnobject; }
页面传值和自定义拷贝
做网络相关的一些问题时,有时候值比较多,自定义个一个类,想把这个类的整个部分的值传到另一个界面,这就涉及到拷贝问题,自定义的类里一定要实现NSCopying协议,写上拷贝的方法-(id)copyWithZone:(NSZone*)zone,这样这个类才会像NSString类一样,可以用=赋值拷贝。
自定义一个TypesItem类,继承自NSObject,含有三个变量(可自定义添加多个)
TypesItem.h
#import<Foundation/Foundation.h> @interfaceTypesItem:NSObject<NSCopying> { NSString*type_id; NSString*type_memo; NSString*type_name; } @property(nonatomic,copy)NSString*type_id; @property(nonatomic,copy)NSString*type_memo; @property(nonatomic,copy)NSString*type_name; @end
TypesItem.m文件中,除了要synthesize这三个变量之外
@synthesizetype_id,type_memo,type_name;