- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在处理核心数据。我有一个实体“目录”,它或多或少有 20 个属性。我正在获取数据并针对实体中的属性 catalogId 使用谓词。在收到的数据中,所有实体数据都有重复的数据,我必须避免它们。我也用过这个
NSManagedObjectContext *context = [(CategoriesAppDelegate*)[UIApplication sharedApplication].delegate managedObjectContext];
NSFetchRequest* fetch = [NSFetchRequest fetchRequestWithEntityName:@"Tbl_catalogPage"];
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Tbl_catalogPage"inManagedObjectContext:context];
[fetch setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"catalogid == '%@'", catalogId]];
[fetch setPredicate:predicate];
[fetch setPropertiesToFetch:[NSArray arrayWithObjects:[[entity attributesByName]objectForKey:@"pageid"], [[entity attributesByName]objectForKey:@"catalogid"], nil]];
[fetch setResultType:NSDictionaryResultType];
[fetch setReturnsDistinctResults : YES];
NSError* error = nil;
self.resultPageArray = [context executeFetchRequest:fetch error:&error];
NSLog(@"result array count %lu",(unsigned long)self.resultPageArray.count);
NSLog (@"names: %@",self.resultPageArray);
NSLog(@"result array values ");
return resultPageArray;
但是没有用。在Catalog实体中,有一个属性pageId,在整个实体中是重复的。我想要使用 catalogId 的数据,其中应该跳过具有相同 pageId 的行,我的意思是避免在获取的数据中重复 pageId ..提前致谢
最佳答案
以下使用两步过程。使用两次获取的原因是:要为每个 pageid
只选择一个对象,我们必须使用 propertiesToGroupBy
,a) 意味着我们必须使用 NSDictionaryResultType
和 b) 意味着我们无法获取除 propertiesToGroupBy
中指定的属性以外的任何属性(正如您在之前的一个问题中所发现的那样)。这两个步骤是:
pageid
分组。 (虽然您不能指定其他属性,但您可以指定objectID。请注意,CoreData 将任意为每个选择一个对象pageid
,并使用其 objectID。)上面的代码:
NSManagedObjectContext *context = [(CategoriesAppDelegate*)[UIApplication sharedApplication].delegate managedObjectContext];
// First fetch
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Tbl_catalogPage"];
// fetch only object IDs
NSExpressionDescription *objIdED = [NSExpressionDescription new];
objIdED.expression = [NSExpression expressionForEvaluatedObject];
objIdED.name = @"objId";
objIdED.expressionResultType = NSObjectIDAttributeType;
[fetch setPropertiesToFetch:@[objIdED]];
// Group by "pageid"
[fetch setPropertiesToGroupBy:@[@"pageid"]];
// Dictionary result type required for Group By:
[fetch setResultType:NSDictionaryResultType];
NSError* error = nil;
NSArray *interimResults = [context executeFetchRequest:fetch error:&error];
// Convert the array of dictionaries into an array of NSManagedObjectIDs
NSArray *requiredObjectIDs = [interimResults valueForKey:@"objId"];
// Second fetch
NSFetchRequest *secondFetch = [NSFetchRequest fetchRequestWithEntityName:@"Tbl_catalogPage"];
// Fetch only the objects with the required objectIDs
secondFetch.predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", requiredObjectIDs];
self.resultPageArray = [context executeFetchRequest:secondFetch error:&error];
NSLog(@"result array count %lu",(unsigned long)self.resultPageArray.count);
NSLog (@"names: %@",self.resultPageArray);
NSLog(@"result array values ");
(为简洁起见省略了错误检查)。
关于ios - 取出过滤后的数据,再次过滤Coredata中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34759379/
我有这样的数据。 (a,b,c,d) (g,b,v,n) (n,h,l,o) (,,,) (,,,) (,,,) (,,,) 我想取出空袋子。 所需的输出 (a,b,c,d) (g,b,v,n) (n
我是编程新手,我有一堆 CSV 文件,每个文件大约有 50 到 60 行。在未指定数量的行之后,第二列中有一个名为“NAME”的字符串。我想获取“NAME”之后第二列中的所有内容并将其打印到文本文件中
有没有办法在 linq 中删除以下代码中的 foreach 并产生相同的输出? DropDownList ddl = new DropDownList(); foreach (Data
注意-可以使用UIViewControllerAnimatedTransitioning https://developer.apple.com/library/ios/documentation/u
因此,我开始使用 Swift 为网站构建应用程序。主要目标是拥有一个可以接收通知(来自网站的 JSON)并可以显示网站所有功能的 iOS 应用程序。所以我可以从应用程序登录并注册到我的数据库,但问题是
我希望直接使用 ALAssetsLibrary 和 ALAsset 以 NSData 对象的形式提取图像。 使用 NSURL,我按以下方式取出图像。 NSURL *referenceURL =newU
我是一名优秀的程序员,十分优秀!