900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Objective-C处理空字符串和页面传值及自定义拷贝

Objective-C处理空字符串和页面传值及自定义拷贝

时间:2023-07-25 02:49:46

相关推荐

Objective-C处理空字符串和页面传值及自定义拷贝

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习推荐的Objective-C处理空字符串和页面传值及自定义拷贝,过去的都会过去,迎接崭新的开始,释放更美好的自己。

空字符串

在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,比如null,(null),null。

如果单纯用

代码如下:

string!=nil;

无法判断出尖括号的空串

完整判断方法

代码如下:

-(BOOL)isNull:(id)object

{

// 判断是否为空串

if ([object isEqual:[NSNull null]]) {

return NO;

}

else if ([object isKindOfClass:[NSNull class]])

{

return NO;

}

else if (object==nil){

return NO;

}

return YES;

}

对空串进行发消息会出现各种各样的崩溃,让人很无语,同理转换字符串

代码如下:

-(NSString*)convertNull:(id)object{

// 转换空串

if ([object isEqual:[NSNull null]]) {

return @" ";

}

else if ([object isKindOfClass:[NSNull class]])

{

return @" ";

}

else if (object==nil){

return @"无";

}

return object;

}

页面传值和自定义拷贝

做网络相关的一些问题时,有时候值比较多,自定义个一个类,想把这个类的整个部分的值传到另一个界面,这就涉及到拷贝问题,自定义的类里一定要实现NSCopying协议,写上拷贝的方法- (id)copyWithZone:(NSZone *)zone,这样这个类才会像NSString类一样,可以用=赋值拷贝。

自定义一个TypesItem类,继承自NSObject,含有三个变量(可自定义添加多个)

TypesItem.h

代码如下:

#import Foundation/Foundation.h

@interface TypesItem : NSObjectNSCopying

{

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这三个变量之外

代码如下:

@synthesize type_id,type_memo,type_name;

还要实现NSCopying协议方法

代码如下:

- (id)copyWithZone:(NSZone *)zone

- (id)copyWithZone:(NSZone *)zone

{

TypesItem *newItem = [[TypesItem ] init];

= ;

= ;

= ;

return newItem;

}

页面间传值,假设A-B,A中的TypeItem的值要传到B中

在B中.h文件写上代码

代码如下:

@property(nonatomic,copy) TypesItem *selectedItem;

在B.m文件中

代码如下:

@synthesize selectedItem;

在A.m中跳转到B之前加上代码

代码如下:

BViewController *BVC = [[[BViewController alloc] initWithNibName:@"BViewController" ] autorelease];

// item为TypeItem类型,且不为空

= item;

[ ];

PS:页面间传值时,此处的中的BVC一定与push过去的BVC保持一致,否则push到B界面中的selectedItem值必定为null。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。