这可能听起来很愚蠢,但这里是要预测的数据: @interface Person @property NSString *name; @property NSString *phone; @property NSString *address; @end 我得到一个NSPredicate,将通过Person Arraysearch,按名称search。 通常情况下,我会使用它 NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText]; 但是,我怎样才能使用键(名称)作为参数? 喜欢 NSString *key = @"name"; NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"%@ contains[c] %@", key, searchText]; predicate1工作正常,但谓词2没有。 当我用lldb进行debugging时,那两个不同: po [predicate1 predicateFormat] name CONTAINS[c] "Eddie" po [predicate2 predicateFormat] "name" CONTAINS[c] "Eddie" 问题是:我可以使predicate2工作? 我想通过键search(名称)作为参数…如果我可以,怎么样?
我正在使用以下NSPredicate进行过滤, NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName CONTAINS %@ ) OR (lastName CONTAINS %@ )OR (UserName CONTAINS %@ ) ", myText,myText,myText]; NSArray *filtered = [responseArray filteredArrayUsingPredicate:predicate]; 它工作正常,但是区分大小写。 我需要的过滤应该不区分大小写。 我试过了, NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY firstName CONTAINS %@ ) OR (ANY lastName CONTAINS %@ )OR (ANY UserName CONTAINS %@ ) ", myText,myText,myText]; 但它会抛出错误 *** Terminating app due […]
我有一个date字段的实体,我想select一个给定年份的logging。 如何build立一个NSP的工作呢? 核心数据中没有find关于date函数(如果有的话)的任何信息 谢谢
我有一个自定义对象的数组。 自定义对象看起来像这样 @interface User : NSObject @property(nonatomic, strong)NSString *user_Id; @property(nonatomic, strong)NSString *user_Name; @property(nonatomic, strong)NSString *user_UserName; @end 我必须过滤数组检查2个属性。 user_Name如果我searcha然后它应该得到从数组过滤的用户列表包含a在user_Name或user_Id我怎么能做到这一点? 对于我知道的单个媒体资源[user_Name] NSString *predicateString = @"user_Name MATCHES[c] %@"; NSString *matchString = [NSString stringWithFormat: @".*%@.*",searchText]; NSPredicate *predicate =[NSPredicate predicateWithFormat:predicateString, matchString]; self.searchResults = [userArray filteredArrayUsingPredicate:predicate];
当我使用UISearchBar并将某些内容写入searchstring时, 整个search事件会变得有点迟缓 。 我的猜测是我在主线程中搞乱了UI的东西和核心数据,但是我可能是错的。 更重要的是,我为所有这些东西使用一个实体,所以没有关系等等。这个表中有3321个对象,这个应用程序大约需要12到14 MB的RAM ,你可以在下面的截图中看到: 我认为这样会更有效率,因为3321个对象不是那么多。 对于所有核心数据的东西我使用MagicalReacord 。 我操作NSPredicate一个实例,但在主表视图和search表视图之间切换NSPredicate 。 但是,没有什么比这更有价值的源代码,所以在这里你去: #import "GroupsViewController.h" #import "CashURLs.h" #import "Group.h" #import <AFNetworking.h> @interface GroupsViewController () { NSPredicate *resultPredicate; UIRefreshControl *refreshControl; } @property (strong, nonatomic) NSMutableArray *selectedGroups; @property (strong, nonatomic) NSFetchedResultsController *groupsFRC; @end @implementation GroupsViewController -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // Getting array of selected groups self.selectedGroups = […]
我有一些数据( NSDictionary在NSMutableArray ),样本数据就像, 考虑每一行为NSDictionary ,整个表是一个NSMutableArray包含事件。 我想在两个date之间产生结果,所以我使用NSPredicate来过滤我的数据。 这是我的代码片段, NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Date >= %@ AND Date <= %@", startDate,endDate]; NSArray *filter = [arrayEvents filteredArrayUsingPredicate:predicate]; testing过滤 : 情况1: NSString *startDate = @"01/07/14"; NSString *endDate = @"31/07/2014"; 输出:所有事件(行)。 案例2: NSString *startDate = @"20/07/14"; NSString *endDate = @"31/07/2014"; 输出:最后四个事件(行)。 案例3: NSString *startDate = @"11/07/14"; NSString *endDate = @"20/07/2014"; […]
我有一个名为self.eventsArray的数组,看起来像这样: [ { "artist": [ { "artist_name": "Dillon Francis", "name": "Dillon Francis", }, { "artist_name": "Major Lazer", "name": "Major Lazer", }, { "artist_name": "Flosstradamus ", "name": "Flosstradamus", } ], "name": "Mad Decent Block Party NYC", }, { "artist": [ { "artist_name": "Ryan Raddon", "name": "Kaskade", } ], "name": "Kaskade Atmosphere Tour NYC", }, ] 我一直试图通过两次使用NSPredicate来过滤它。 […]
我有一个NSMangedObject包含其他NSManagedObjects NSSet 。 我需要检查这些对象是否在NSSet有一个值,然后返回它们。 我使用MagicalRecord来获取数据。 所以我需要这样的东西: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"stringObjects contains %@", string]; 所以,如果NSSet stringObjects包含一些我正在查找的string,然后返回我请求的对象。 这里的一个注意:stringObjects(名称只是例如它代表我的NSSet )它是NSSet包含NSManagedObjects,所以我需要通过一些id(例如string_id属性)来search它们。 那么模型看起来像这样 NSSet *set = MainObject.stringObjects; NSString *string_id_for_first_object = [[[set allObjects] objectAtIndex:0] string_id]; 只是为了更好地理解关系。 但问题是如何创build谓词来检查NSSet是否包含所需的id。
我有大量的string,我正在查找是否存在给定的子string。 看来有两种合理的方法来做到这一点。 选项1:使用NSString方法rangeOfSubstring并testingrangeOfSubstring是否存在: NSRange range = [string rangeOfSubstring:substring]; return (range.location != NSNotFound); 选项2.使用NSPredicate语法CONTAINS : NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", substring]; return ([regex evaluateWithObject:string] == YES) 哪种方法更好,还是有一个很好的选项3,我完全失踪了? 不,我不确定我的意思是“更好”,但是可能在迭代许多string时意味着更快。
我的谓词想要排除一些已经下载并且在[CKRecordID]中可用的logging。 现在我可以查询1 CKRecordID [0],但不是[CKRecordID]数组。 我如何查询数组? let excludeIDs: [CKRecordID] 这工作: let pred1 = NSPredicate(format: "NOT(recordID = %@)", excludeIDs[0]) 但是这不是: let pred1 = NSPredicate(format: "NOT(recordID IN %@)", excludeIDs) 错误:loadImageCompareRecordIDsAndEndDateThatHaveNotEnded错误:无效的谓词:无效的谓词:数组成员必须符合CKRecordValue:(“”,“”,“”,“”,“”)(CKRecordID) 代码的其他一般部分: let sort = NSSortDescriptor(key: "creationDate", ascending: false) let query = CKQuery(recordType: MyRecordTypes.ImageCompare, predicate: pred1) query.sortDescriptors = [sort] let operation = CKQueryOperation(query: query) operation.desiredKeys = ["endDate"] operation.resultsLimit = […]