iOS项目开发之Objective-C

来源:爱站网时间:2021-12-20编辑:网友分享
爱站技术频道小编今天给大家介绍下在iOS应用项目开发中关于Objective-C处理空字符串和页面传值及自定义拷贝的相关内容,有需要的朋友可以来了解下,希望能帮助到大家。

空字符串
在ios应用中,如果从网络请求数据,返回json或者是xml格式的数据时,经常会遇到空串,一般接口是用java等语言写的,如果是安卓,因为源语言都是java,只需判断是否等于null即可,但是在ios中会出现各种各项的形式,比如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
 
@interface TypesItem : NSObject
{
    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 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文件写上代码

 

@property(nonatomic,copy) TypesItem *selectedItem;


在B.m文件中

 


@synthesize selectedItem;


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

 


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。

ios开发系列中的Objective-C处理空字符串和页面传值及自定义拷贝内容,大家都读懂了多少,在我们爱站技术频道里,有关ios开发的内容应有尽有,喜欢可以关注下。

上一篇:iOS开发之app如何实现获取本机通讯录

下一篇:iOS项目开发之Reachability

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载