Objective-C處理空字符串和頁(yè)面?zhèn)髦导白远x拷貝
空字符串
在ios應(yīng)用中,如果從網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù),返回json或者是xml格式的數(shù)據(jù)時(shí),經(jīng)常會(huì)遇到空串,一般接口是用java等語(yǔ)言寫的,如果是安卓,因?yàn)樵凑Z(yǔ)言都是java,只需判斷是否等于null即可,但是在ios中會(huì)出現(xiàn)各種各項(xiàng)的形式,比如null,(null),<null>。
如果單純用
string!=nil;
無法判斷出尖括號(hào)的空串
完整判斷方法
-(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)各種各樣的崩潰,讓人很無語(yǔ),同理轉(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;
}
頁(yè)面?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;
}
頁(yè)面間傳值,假設(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:頁(yè)面間傳值時(shí),此處的BVC.selectedItem中的BVC一定與push過去的BVC保持一致,否則push到B界面中的selectedItem值必定為null。
相關(guān)文章
解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問題
這篇文章主要介紹了解決iOS調(diào)起微信支付顯示系統(tǒng)繁忙問題,需要的朋友可以參考下2016-12-12ios實(shí)現(xiàn)tableView頂部彈簧圖片效果
這篇文章主要為大家詳細(xì)介紹了ios實(shí)現(xiàn)tableView頂部彈簧圖片效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路
這篇文章主要介紹了淺談關(guān)于如何檢測(cè)iOS14本地網(wǎng)絡(luò)權(quán)限的一些思路,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09iOS拍照后圖片自動(dòng)旋轉(zhuǎn)90度的完美解決方法
今天開發(fā)一個(gè)拍照獲取照片的功能的時(shí)候, 發(fā)現(xiàn)上傳之后圖片會(huì)自動(dòng)旋轉(zhuǎn)90.在測(cè)試中發(fā)現(xiàn)只要是圖片大于2M, 系統(tǒng)就會(huì)自動(dòng)翻轉(zhuǎn)照片。下面小編通過本文給大家分享下解決辦法2016-12-12混合棧跳轉(zhuǎn)導(dǎo)致Flutter頁(yè)面事件卡死問題解決
這篇文章主要為大家介紹了混合棧跳轉(zhuǎn)導(dǎo)致Flutter頁(yè)面事件卡死問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08IOS 圖文混排(CoreText.framework)詳解及實(shí)例
這篇文章主要介紹了IOS 圖文混排(CoreText.framework)詳解及實(shí)例的相關(guān)資料,這里對(duì)IOS 的圖文混排進(jìn)行了詳細(xì)介紹,并附代碼實(shí)例,和實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-11-11