是否可以根据let say object.name创建NSPredicate进行过滤? (object是我想要过滤的对象的属性。)
编辑:通过过滤器,我的意思是我有一个首字母列表,当用户点击一个时,我想删除object.name以该首字母开头的所有引脚。
示例:我见过this question,其中接受的答案显示了如何使用NSPredicate和子类化过滤地图视图上的图钉。这几乎就是我想要的。
但在我的情况下,我有一个CustomPin类,它继承了MKAnnotation。我的自定义引脚有一个名为“object”的属性,它是类Friend,它继承了NSManagedObject。
现在我想按 pin.object.name 进行过滤。
额外:(如果由于这个部分不可能,那么我将为Friend和Pet创建一个超类,并使它们都是继承名称,但目前它没有这样做,所以我添加了这部分也是。)
为了使事情变得更加忙碌,对象可以是类Friend或Pet,它们都继承了NSManagedObject并具有属性“name”。
这是我的CustomPin类:
@interface CustomPin : NSObject <MKAnnotation, OCGrouping>
- (CustomPin *)initWithCoordinate:(CLLocationCoordinate2D)coordinate title:(NSString *)title subtitle:(NSString *)subtitle pinType:(NSNumber *)pinType;
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
@property (nonatomic, strong) NSNumber *pinType;
@property (nonatomic, copy) NSString *groupTag;
@property (nonatomic, weak) NSManagedObject *object;
这是我的朋友班:
@property (nonatomic, retain) NSString * address;
@property (nonatomic, retain) NSNumber * latitude;
@property (nonatomic, retain) NSNumber * longitude;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * phone_no;
@property (nonatomic, retain) NSString * type;
这是我的Pet课程:
@property (nonatomic, retain) NSString * address;
@property (nonatomic, retain) NSNumber * latitude;
@property (nonatomic, retain) NSNumber * longitude;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * phone_no;
显然,班级名称仅用于举例。
答案 0 :(得分:0)
NSString *nameOfObject = @"some name";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"object.name like %@", nameOfObject];
// or "object.name == %@"
NSArray *filteredArray = [arrayOfPins filteredArrayUsingPredicate:predicate];
答案 1 :(得分:0)
使用
NSArray *b = [yourArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"pin.object.name = %@", required_name]];