Iphone 将选择器与NSPredicate一起使用
我有一个包含几个不同字符串的对象。显示此对象时,根据对象的另一个属性,我将显示一个或另一个字符串。我在对象中定义了一个函数,负责决定显示哪个字符串。因此,作为一个简单的例子:Iphone 将选择器与NSPredicate一起使用,iphone,nspredicate,Iphone,Nspredicate,我有一个包含几个不同字符串的对象。显示此对象时,根据对象的另一个属性,我将显示一个或另一个字符串。我在对象中定义了一个函数,负责决定显示哪个字符串。因此,作为一个简单的例子: @interface MyObject : NSObject { NSString* string1; NSString* string2; NSString* string3; int stringNum; } -(NSString)getDisplayString { if(s
@interface MyObject : NSObject {
NSString* string1;
NSString* string2;
NSString* string3;
int stringNum;
}
-(NSString)getDisplayString {
if(stringNum == 1) {
return string1;
} else if (stringNum == 2) {
return string2;
} else if (stringNum == 3) {
return string3;
}
}
现在,我想创建一个NSPredicate
,用于搜索这些对象的数组。是否可以创建一个搜索getDisplayString
结果的搜索引擎?显然,我可能会在谓词中复制getDisplayString
的行为,但随后我将在逻辑上加倍,并可能导致一个错误。是的
NSPredicate *p = [NSPredicate predicateWithFormat:@"getDisplayString = %@", @"foo"];
NSArray *filtered = [arrayOfMyObjects filteredArrayUsingPredicate:p];
作为旁注,您不应该在方法名前面加上
get
,除非您将通过out参数返回值byref。查看更多信息。我想你指的是getDisplayString,不是getDisplayName?关于方法名get
-我同时也学到了这一点(这个问题已经8个月了:)@alku83呜呜,谢谢你抓住它:)是的,这是一个老问题,但我只是偶然发现了它,它没有答案,这对人们来说是一个很好的信息