【发布时间】:2015-02-04 07:28:28
【问题描述】:
我开始在 Core Data 中使用多个持久性存储。为此,我编写了以下代码:
- (NSUInteger)countEntity:(NSString*)entityName
withPredicate:(NSPredicate*)predicate
onStore:(NSString*)configName
{
NSFetchRequest *request=[[NSFetchRequest alloc] init];
if (predicate) [request setPredicate:predicate];
NSError *error=nil;
[request setEntity:[NSEntityDescription entityForName:entityName
inManagedObjectContext:context]];
[request setAffectedStores:
[NSArray arrayWithObject:[[configurDico objectForKey:configName]
objectForKey:@"store"]]];
NSUInteger count=[context countForFetchRequest:request error:&error]; // PROBLEMATIC LINE.
return count;
}
但我在调试器的 PROBLEMATIC LINE 行收到以下消息。
2014-12-06 02:56:10.932 TheApp[1501:76002] -[NSURL executeRequest:withContext:error:]: unrecognized selector sent to instance 0x1757df50
我做错了什么?
作为参考,我不得不说以下方法,几乎与前一种方法一样,效果很好:
- (NSUInteger)countEntity:(NSString*)entityName
withPredicate:(NSPredicate*)predicate
{
NSFetchRequest *request=[[NSFetchRequest alloc] init];
if (predicate) [request setPredicate:predicate];
NSError *error=nil;
[request setEntity:[NSEntityDescription entityForName:entityName
inManagedObjectContext:context]];
NSUInteger count=[context countForFetchRequest:request error:&error];
return count;
}
这让我想,既然这是唯一添加的行,我一定是在使用 setAffectedStores: 错误的方式。
【问题讨论】:
标签: ios core-data persistent-storage