如何檢查NSArray
上最後一個對象中的對象?如何檢查對象是否是NSArray上的最後一個對象
我已經試過:
if ([currentStore isEqual:[Stores lastObject]])
{
//Code
}
,但沒有奏效。
有什麼想法?
謝謝!
如何檢查NSArray
上最後一個對象中的對象?如何檢查對象是否是NSArray上的最後一個對象
我已經試過:
if ([currentStore isEqual:[Stores lastObject]])
{
//Code
}
,但沒有奏效。
有什麼想法?
謝謝!
或試試這個
BOOL lastElement = false;
NSUInteger index = [stores indexOfObject:currentStore];
if (index != NSNotFound)
{
lastElement = (index == [stores count] - 1);
}
位修改試試這個:
NSUInteger index = [stores indexOfObject:currentStore];
if (index == ([stores count]-1))
{
NSLog(@"Yes its Last");
}
如果沒有重載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?!?");
}
}
這是一個'NSString'對象的數組,它正確地覆蓋'isEqual:'。 – trojanfoe
你可以在數組對象的索引並檢查是否比少一個總數。如果是,那麼它是最後一個對象。 – Gandalf
你的代碼似乎罰款,請手動檢查對象數組 – techloverr
什麼樣的對象是currentStore –