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

 更新时间:2016年01月20日 09:17:38   作者:芳草小脚丫  
这篇文章主要介绍了Objective-C处理空字符串和页面传值及自定义拷贝的相关方法,在iOS应用项目开发中经常会用到,需要的朋友可以参考下

空字符串
在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 : 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这三个变量之外

复制代码 代码如下:

@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自适配利器Masonry使用指南

    IOS自适配利器Masonry使用指南

    如果说自动布局解救了多屏幕适配,那众多三方库的出现就解救了系统自动布局的写法。Masonry就是其中一个。用法上也比较简单灵活,很大程度上替代了传统的NSLayoutConstraint布局方式。下面我们就来具体探讨下吧
    2016-01-01
  • iOS如何跳转到App Store下载评分页面示例代码

    iOS如何跳转到App Store下载评分页面示例代码

    最近在工作中遇到一个需求,需要跳转到App Store下载评分,通过查找相关的资料最终解决了,下面这篇文章主要给大家介绍了关于iOS如何跳转到App Store下载评分页面的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • IOS开发教程之put上传文件的服务器的配置及实例分享

    IOS开发教程之put上传文件的服务器的配置及实例分享

    IOS开发给人一种高大上的赶脚,弄的好像你不会IOS就不是个合格的程序员一样,好吧,既然是大趋势,那我们就来学习下吧,今天来看看put上传文件的服务器配置及案例
    2014-06-06
  • IOS多线程开发之线程的状态

    IOS多线程开发之线程的状态

    这篇文章主要介绍了IOS多线程开发之线程的状态 的相关资料,需要的朋友可以参考下
    2015-12-12
  • 详解iOS开发中app的归档以及偏好设置的存储方式

    详解iOS开发中app的归档以及偏好设置的存储方式

    这篇文章主要介绍了iOS开发中app的归档以及偏好设置的存储方式,示例代码基于传统的Objective-C,需要的朋友可以参考下
    2015-12-12
  • IOS开发中的设计模式汇总

    IOS开发中的设计模式汇总

    在ios的程序开发中,经常搞晕ios的开发模式,今天小编就给大家简单的总结一下,需要的的朋友参考下
    2017-03-03
  • iOS实现九宫格自动生成视图

    iOS实现九宫格自动生成视图

    这篇文章主要为大家详细介绍了iOS实现九宫格自动生成视图的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 教你如何解决XCODE升级后插件不能用问题

    教你如何解决XCODE升级后插件不能用问题

    Xcode 每次更新有个很头疼的问题,就是插件都会失效,要重装。 不得不说好多插件还是非常方便能提高效率。那么如何来解决这个问题呢,今天我们就来探讨下。
    2015-11-11
  • ios7中UIViewControllerBasedStatusBarAppearance作用详解

    ios7中UIViewControllerBasedStatusBarAppearance作用详解

    这篇文章主要介绍了 ios7中UIViewControllerBasedStatusBarAppearance作用详解的相关资料,需要的朋友可以参考下
    2016-11-11
  • iOS中长条蓝色按钮(button)实现代码

    iOS中长条蓝色按钮(button)实现代码

    本文通过实例代码给大家介绍了iOS中长条蓝色按钮(button)实现方法,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-08-08

最新评论