最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Objective-C處理空字符串和頁面?zhèn)髦导白远x拷貝

 更新時(shí)間:2016年01月20日 09:17:38   作者:芳草小腳丫  
這篇文章主要介紹了Objective-C處理空字符串和頁面?zhèn)髦导白远x拷貝的相關(guān)方法,在iOS應(yīng)用項(xiàng)目開發(fā)中經(jīng)常會(huì)用到,需要的朋友可以參考下

空字符串
在ios應(yīng)用中,如果從網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù),返回json或者是xml格式的數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到空串,一般接口是用java等語言寫的,如果是安卓,因?yàn)樵凑Z言都是java,只需判斷是否等于null即可,但是在ios中會(huì)出現(xiàn)各種各項(xiàng)的形式,比如null,(null),<null>。
如果單純用

復(fù)制代碼 代碼如下:

string!=nil;

無法判斷出尖括號(hào)的空串

完整判斷方法

復(fù)制代碼 代碼如下:

-(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;
}

對(duì)空串進(jìn)行發(fā)消息會(huì)出現(xiàn)各種各樣的崩潰,讓人很無語,同理轉(zhuǎn)換字符串
復(fù)制代碼 代碼如下:

-(NSString*)convertNull:(id)object{
 
    // 轉(zhuǎn)換空串
 
    if ([object isEqual:[NSNull null]]) {
        return @" ";
    }
    else if ([object isKindOfClass:[NSNull class]])
    {
        return @" ";
    }
    else if (object==nil){
        return @"無";
    }
    return object;
    
}

頁面?zhèn)髦岛妥远x拷貝
做網(wǎng)絡(luò)相關(guān)的一些問題時(shí),有時(shí)候值比較多,自定義個(gè)一個(gè)類,想把這個(gè)類的整個(gè)部分的值傳到另一個(gè)界面,這就涉及到拷貝問題,自定義的類里一定要實(shí)現(xiàn)NSCopying協(xié)議,寫上拷貝的方法- (id)copyWithZone:(NSZone *)zone,這樣這個(gè)類才會(huì)像NSString類一樣,可以用=賦值拷貝。
自定義一個(gè)TypesItem類,繼承自NSObject,含有三個(gè)變量(可自定義添加多個(gè))

TypesItem.h

復(fù)制代碼 代碼如下:

#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這三個(gè)變量之外

復(fù)制代碼 代碼如下:

@synthesize type_id,type_memo,type_name;


還要實(shí)現(xiàn)NSCopying協(xié)議方法
復(fù)制代碼 代碼如下:

- (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;
}


頁面間傳值,假設(shè)A->B,A中的TypeItem的值要傳到B中

在B中.h文件寫上代碼

復(fù)制代碼 代碼如下:

@property(nonatomic,copy) TypesItem *selectedItem;

在B.m文件中
復(fù)制代碼 代碼如下:

@synthesize selectedItem;

在A.m中跳轉(zhuǎn)到B之前加上代碼
復(fù)制代碼 代碼如下:

BViewController *BVC = [[[BViewController alloc] initWithNibName:@"BViewController" bundle:nil] autorelease];
  
    // item為TypeItem類型,且不為空
  
    BVC.selectedItem = item;
    
    [self.navigationController pushViewController:BVC animated:YES];

PS:頁面間傳值時(shí),此處的BVC.selectedItem中的BVC一定與push過去的BVC保持一致,否則push到B界面中的selectedItem值必定為null。

相關(guān)文章

最新評(píng)論

黑山县| 通州区| 交城县| 鄂伦春自治旗| 曲阜市| 安岳县| 西和县| 长海县| 华坪县| 宁陕县| 巴南区| 盐边县| 满洲里市| 曲麻莱县| 丹凤县| 临城县| 永新县| 内江市| 姚安县| 弋阳县| 加查县| 林芝县| 苍溪县| 天全县| 井冈山市| 沙坪坝区| 东安县| 大兴区| 高要市| 尤溪县| 清徐县| 军事| 弥勒县| 苍梧县| 蒙自县| 清流县| 买车| 清新县| 自贡市| 方正县| 五原县|