Objective-C處理空字符串和頁面?zhèn)髦导白远x拷貝
空字符串
在ios應(yīng)用中,如果從網(wǎng)絡(luò)請求數(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>。
如果單純用
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;
}
對空串進(jìn)行發(fā)消息會(huì)出現(xiàn)各種各樣的崩潰,讓人很無語,同理轉(zhuǎn)換字符串
-(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
#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è)變量之外
@synthesize type_id,type_memo,type_name;
還要實(shí)現(xiàn)NSCopying協(xié)議方法
- (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文件寫上代碼
@property(nonatomic,copy) TypesItem *selectedItem;
在B.m文件中
@synthesize selectedItem;
在A.m中跳轉(zhuǎn)到B之前加上代碼
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)文章
iOS如何跳轉(zhuǎn)到App Store下載評分頁面示例代碼
最近在工作中遇到一個(gè)需求,需要跳轉(zhuǎn)到App Store下載評分,通過查找相關(guān)的資料最終解決了,下面這篇文章主要給大家介紹了關(guān)于iOS如何跳轉(zhuǎn)到App Store下載評分頁面的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-12-12
IOS開發(fā)教程之put上傳文件的服務(wù)器的配置及實(shí)例分享
IOS開發(fā)給人一種高大上的趕腳,弄的好像你不會(huì)IOS就不是個(gè)合格的程序員一樣,好吧,既然是大趨勢,那我們就來學(xué)習(xí)下吧,今天來看看put上傳文件的服務(wù)器配置及案例2014-06-06
詳解iOS開發(fā)中app的歸檔以及偏好設(shè)置的存儲(chǔ)方式
這篇文章主要介紹了iOS開發(fā)中app的歸檔以及偏好設(shè)置的存儲(chǔ)方式,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12
iOS實(shí)現(xiàn)九宮格自動(dòng)生成視圖
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)九宮格自動(dòng)生成視圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
ios7中UIViewControllerBasedStatusBarAppearance作用詳解
這篇文章主要介紹了 ios7中UIViewControllerBasedStatusBarAppearance作用詳解的相關(guān)資料,需要的朋友可以參考下2016-11-11
iOS中長條藍(lán)色按鈕(button)實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了iOS中長條藍(lán)色按鈕(button)實(shí)現(xiàn)方法,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-08-08

