源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-08-21 15:04 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Objective-C处理空字符串和页面传值及自定义拷贝
[b]空字符串 [/b]在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,比如null,(null),<null>。 如果单纯用
[u]复制代码[/u] 代码如下:
string!=nil;
无法判断出尖括号的空串 完整判断方法
[u]复制代码[/u] 代码如下:
-(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; }
对空串进行发消息会出现各种各样的崩溃,让人很无语,同理转换字符串
[u]复制代码[/u] 代码如下:
-(NSString*)convertNull:(id)object{       // 转换空串       if ([object isEqual:[NSNull null]]) {         return @" ";     }     else if ([object isKindOfClass:[NSNull class]])     {         return @" ";     }     else if (object==nil){         return @"无";     }     return object;      }
[b]页面传值和自定义拷贝 [/b]做网络相关的一些问题时,有时候值比较多,自定义个一个类,想把这个类的整个部分的值传到另一个界面,这就涉及到拷贝问题,自定义的类里一定要实现NSCopying协议,写上拷贝的方法- (id)copyWithZone:(NSZone *)zone,这样这个类才会像NSString类一样,可以用=赋值拷贝。 自定义一个TypesItem类,继承自NSObject,含有三个变量(可自定义添加多个) TypesItem.h
[u]复制代码[/u] 代码如下:
#import <Foundation/Foundation.h>   @interface TypesItem : 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这三个变量之外
[u]复制代码[/u] 代码如下:
@synthesize type_id,type_memo,type_name;
还要实现NSCopying协议方法
[u]复制代码[/u] 代码如下:
- (id)copyWithZone:(NSZone *)zone - (id)copyWithZone:(NSZone *)zone {     TypesItem *newItem = [[TypesItem allocWithZone:zone] init];          newItem.type_name = self.type_name;     newItem.type_id = self.type_id;     newItem.type_memo = self.type_memo;     return newItem; }
页面间传值,假设A->B,A中的TypeItem的值要传到B中 在B中.h文件写上代码
[u]复制代码[/u] 代码如下:
@property(nonatomic,copy) TypesItem *selectedItem;
在B.m文件中
[u]复制代码[/u] 代码如下:
@synthesize selectedItem;
在A.m中跳转到B之前加上代码
[u]复制代码[/u] 代码如下:
BViewController *BVC = [[[BViewController alloc] initWithNibName:@"BViewController" bundle:nil] autorelease];        // item为TypeItem类型,且不为空        BVC.selectedItem = item;          [self.navigationController pushViewController:BVC animated:YES];
PS:页面间传值时,此处的BVC.selectedItem中的BVC一定与push过去的BVC保持一致,否则push到B界面中的selectedItem值必定为null。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部