2016-03-03 121 views
0

如何檢查NSArray上最後一個對象中的對象?如何檢查對象是否是NSArray上的最後一個對象

我已經試過:

if ([currentStore isEqual:[Stores lastObject]]) 
{ 
    //Code 
} 

,但沒有奏效。

有什麼想法?

謝謝!

+0

你可以在數組對象的索引並檢查是否比少一個總數。如果是,那麼它是最後一個對象。 – Gandalf

+0

你的代碼似乎罰款,請手動檢查對象數組 – techloverr

+2

什麼樣的對象是currentStore –

回答

0

或試試這個

BOOL lastElement = false; 
NSUInteger index = [stores indexOfObject:currentStore]; 
if (index != NSNotFound) 
{ 
    lastElement = (index == [stores count] - 1); 
} 
0

位修改試試這個:

NSUInteger index = [stores indexOfObject:currentStore]; 
      if (index == ([stores count]-1)) 
      { 
       NSLog(@"Yes its Last"); 
      } 
0

如果沒有重載isEqual方法,基類實現NSObject中的::僅的isEqual檢查,如果兩個指針點到相同的地址。

這個優秀的文章http://nshipster.com/equality/解釋objc平等的原則

在下面的示例日誌 - 測試商店 - 工作正常

@interface Stores : NSObject 

@property (strong, nonatomic) NSString* name; 

- (instancetype) initWithName:(NSString*) name; 

@end 

@implementation Stores 

- (instancetype) initWithName:(NSString*) name; 
{ 
    _name = name; 
    return self; 
} 


- (BOOL)isEqualToStores:(Stores*) Stores 
{ 
    if (!Stores) 
     return NO; 

    if (![_name isEqualToString:Stores.name]) 
     return NO; 

    return YES; 
} 

- (BOOL)isEqual:(id)object 
{ 
    if (self == object) 
    { 
     return YES; 
    } 

    if (![object isKindOfClass:[Stores class]]) 
    { 
     return NO; 
    } 

    return [self isEqualToStores:(Stores *)object]; 
} 

@end 

-(void) testStores 
{ 
    Stores* last = [[Stores alloc] initWithName:@"5"]; 
    NSArray* arr = @[ 
        [[Stores alloc] initWithName:@"1"], 
        [[Stores alloc] initWithName:@"2"], 
        [[Stores alloc] initWithName:@"3"], 
        [[Stores alloc] initWithName:@"4"], 
        [[Stores alloc] initWithName:@"5"] 
        //last 
        ]; 

    if ([last isEqual:[arr lastObject]]) 
    { 
     NSLog(@"Testing Stores - works fine"); 
    } 
    else 
    { 
     NSLog(@"Testing Stores - opps!?1?!?"); 
    } 
} 
+0

這是一個'NSString'對象的數組,它正確地覆蓋'isEqual:'。 – trojanfoe

相關問題