如何检查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?!?");
}
}