国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

Objective-C處理空字符串和頁面傳值及自定義拷貝

2019-10-21 18:56:16
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 翁牛特旗| 和顺县| 铜梁县| 嵊州市| 通河县| 连云港市| 永平县| 富顺县| 呼玛县| 五华县| 隆尧县| 滕州市| 琼海市| 罗江县| 阳春市| 武隆县| 商城县| 分宜县| 古丈县| 乾安县| 内丘县| 义马市| 莆田市| 静海县| 咸宁市| 太仆寺旗| 靖边县| 威海市| 和田县| 临安市| 黎城县| 全南县| 当涂县| 合山市| 马关县| 桂林市| 延吉市| 元氏县| 甘谷县| 常山县| 兴安县|