我有一个非常简单的获取请求,我想执行.我的一个实体有一个名为smartCollectionIds的属性,它的类型是可转换的.我使用此属性来存储一个NSArray简单的字符串.在我的代码中,我使用an NSfetchedResultsController来填充tableview.我使用的谓词如下:
predicate=[NSPredicate predicateWithFormat:@"smartCollectionIds!=nil && (%@ IN smartCollectionIds)",@"87F173A5-863D-4ECE-9673-A61D8F1E01FC-6285-000009A9CBAF3290"];
Run Code Online (Sandbox Code Playgroud)
但是这会导致崩溃,特别是在我执行提取时的品脱.但是,如果我首先使用fetch将所有对象加载到数组中,然后使用上面的谓词将其过滤掉,那么应用程序不会崩溃,我会按预期获得结果.所以基本上 这个代码不起作用
-(void) tryTO
{
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Tweetary" inManagedObjectContext: [[ChubbyEyetwitterEngine sharedInstance] getManagedObjectContextForUse]];
NSPredicate *predicate;
predicate=[NSPredicate predicateWithFormat:@"smartCollectionIds!=nil && (%@ IN smartCollectionIds)",@"87F173A5-863D-4ECE-9673-A61D8F1E01FC-6285-000009A9CBAF3290"];
NSSortDescriptor *secondarySortKey = [[[NSSortDescriptor alloc] initWithKey:@"created_at" ascending:FALSE] autorelease];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease] ;
[request setEntity:entity];
[request setPredicate:predicate];
[request setSortDescriptors:[NSArray arrayWithObjects:
secondarySortKey
,nil]];
[request setFetchLimit:30]; //30
NSError *error;
NSArray *results = [[[ChubbyEyetwitterEngine sharedInstance] getManagedObjectContextForUse] executeFetchRequest:request error:&error];
if (error != nil)
{
NSLog(@"Results are %d",[results count]); …Run Code Online (Sandbox Code Playgroud)