Hur*_*rkS 9 core-data objective-c nspredicate ios
我试图从我的coredatabase中获取单个对象,但它一直返回null.我的方法基于另一个方法,它返回我正在访问的coredata对象的每个值.
我之前从未尝试过这种方法并试过阅读苹果文档,但它只是没有意义..这就是我的方法的样子
- (NSMutableArray *)readSelectedInstall:(NSString *)projIDString {
NSManagedObjectContext *context = [self managedObjectContext];
if (context == nil) {
NSLog(@"Nil");
}
else {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"InstallProject" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ProjID==%@", projIDString];
[fetchRequest setPredicate:predicate];
NSError *error;
NSMutableArray *installProjectDictionaryArray = [[NSMutableArray alloc] init];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (InstallProject *installProj in fetchedObjects) {
NSMutableDictionary *tempInstallProjectDictionaryArray = [[ NSMutableDictionary alloc] init];
[tempInstallProjectDictionaryArray setObject:installProj.companyName forKey:@"CompanyName"];
[tempInstallProjectDictionaryArray setObject:installProj.projNo forKey:@"ProjNo"];
[tempInstallProjectDictionaryArray setObject:installProj.projID forKey:@"ProjID"];
[installProjectDictionaryArray addObject:tempInstallProjectDictionaryArray];
}
return installProjectDictionaryArray;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助让我返回projID匹配projIDString的单个项目将不胜感激.
kar*_*ika 17
导入NSManagedObject(InstallProject)并获取这样的一个对象,
-(InstallProject *)readSelectedInstall:(NSString *)projIDString
{
NSArray *fetchedObjects;
NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"InstallProject" inManagedObjectContext: context];
[fetch setEntity:entityDescription];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"(ANY ProjID contains[cd] %@)",projIDString]];
NSError * error = nil;
fetchedObjects = [context executeFetchRequest:fetch error:&error];
if([fetchedObjects count] == 1)
return [fetchedObjects objectAtIndex:0];
else
return nil;
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ijk 11
怎么样fetchLimit对fetchRequest您可以设置到1
获取限制指定请求在执行时应返回的最大对象数.
例如.在Swift中:
let fetchRequest = NSFetchRequest(entityName: "Cart")
fetchRequest.fetchLimit = 1
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)]
Run Code Online (Sandbox Code Playgroud)
编辑: sortDescriptors的设置只是因为我将这个fetchRequest与NFRC一起使用,你也可以执行fetchRequest:
do {
let fetchRequest = NSFetchRequest(entityName: "Cart")
fetchRequest.fetchLimit = 1
fetchRequest.predicate = NSPredicate(format: "name == %@", mainCart)
var objects: [Cart]
try objects = mainMoc.executeFetchRequest(fetchRequest) as! [Cart]
} catch {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31489 次 |
| 最近记录: |