en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

11.14.2011

判斷物件是否已經存在於陣列中的方法

如果要判斷一個陣列中是否已經存在該物件,可以使用 containsObject: 方法,不管你是使用 NSArray 還是 NSMutableArray 都可以找到此方法。

下列程式碼我們將製作一個存放 UIImage 的 NSMutableArray 和一個存放 NSNumber 的 NSArray,並使用 containsObject: 方法來判斷我們所要找的物件是否存在於陣列中,其程式碼如下。

UIImage *image1 = [UIImage imageNamed:@"Fire.png"];
UIImage *image2 = [UIImage imageNamed:@"Ice.png"];
UIImage *image3 = [UIImage imageNamed:@"Wood.png"];
UIImage *image4 = [UIImage imageNamed:@"Ice.png"];

NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithObjects:image1, image2, image3, nil];

if ([mutableArray containsObject:image4]) {
    //物件存在於陣列時的處理

}

NSNumber *number_A = [NSNumber numberWithInt:3];
NSNumber *number_B = [NSNumber numberWithInteger:4];
NSNumber *number_C = [NSNumber numberWithFloat:5.0];
NSNumber *number_D = [NSNumber numberWithBool:0];

NSArray *array = [[NSArray alloc] initWithObjects:number_A, number_B, number_C, nil];

if ([array containsObject:number_D]) {
    //物件存在於陣列時的處理

}

回顧上述程式碼 containsObject: 會回傳一個布林值(BOOL),代表該物件是否存在於此陣列中,這裡要特別注意,雖然我們使用「物件」來稱呼在陣列中所要尋找的東西,但是就如同  containsObject: 方法它的名稱一樣,它所在呼的是物件的值,而不是物件的名稱,或是它的記憶體位置,所以系統會判斷 image4 是存在於 NSMutableArray 中,而 number_D 不存在於 NSArray 中。






沒有留言:

張貼留言