日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

containsObject 总是不含有,你会用吗

發(fā)布時間:2024/9/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 containsObject 总是不含有,你会用吗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結論:containsObject:是在比較內存地址,即使兩個對象內容完全一樣,地址不同,那也是不同的。我個人認為這個方法應該叫是否存在同一個對象

(開始不知道這個知識,被坑,至少浪費了3個鐘頭,數組里對象內容一樣,就是不包含這個對象,MMP,自己無知怪誰呢)

?

?? ? ? Person中包含name和age,分別表示名字和年齡,數組中包含多個Person,我們的目的是,如果數組中存在同樣的人名,并且年齡完全相同,就舍棄新的Person,如何實現這個需求呢?我們需要重載isEqual方法。

Person.h

@interface Person : NSObject

@property NSString *name;

@property NSInteger age;

@end

?

Person.m?

@implementation Person

- (BOOL)isEqualToPerson:(Person *)person {

? ? if (!person) {

? ? ? ? return NO;

? ? }

? ? BOOL bIsEqualNames =?(!self.name && !person.name) ||?[self.name isEqualToString:person.name];

? ? BOOL bIsEqualAges = self.age == person.age;

? ? return bIsEqualNames && bIsEqualAges;

}

?

#pragma mark - 重載isEqual方法

- (BOOL)isEqual:(id)object {

? ? if (self == object) {

? ? ? ? return YES;

? ? }

?? ?

? ? if (![object isKindOfClass:[Person class]]) {

? ? ? ? return NO;

? ? }

? ? return [self isEqualToPerson:(Person *)object];

}

@end

?


viewController里調用時:?

- (void)viewDidLoad {

? ? [super viewDidLoad];

? ? // Do any additional setup after loading the view.

?? ?

? ? Person *A = [[Person alloc]init];

? ? A.name=@"zhangsan";

? ? A.age=18;

?? ?

? ? Person *B = [[Person alloc]init];

? ? B.name=@"lisi";

? ? B.age=15;

?? ?

? ? NSMutableArray *aArray = [[NSMutableArray alloc]init];

? ? [aArray addObject:A];

? ? [aArray addObject:B];

?? ?

? ? Person *C = [[Person alloc]init];

? ? C.name=@"zhangsan";

? ? C.age=18;

?? ?

? ? NSLog(@"%ld",[aArray containsObject:C]);

?? ?

}

?

最終結果,打印1,證明aArray里含有了一個姓名為zhangsan、年齡為18的人。因為Person.m里的兩個方法,聲明了只要姓名和年齡內容相同,就認為是同一個人。

如果注釋掉Person.m里的兩個方法,會打印0,因為系統(tǒng)默認的containsObject,比較對象的內存地址,C和A內存地址不一樣,所以默認會被認為不含有C,而含有A。

轉載于:https://www.cnblogs.com/huangzs/p/11219235.html

總結

以上是生活随笔為你收集整理的containsObject 总是不含有,你会用吗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。