Ios 使用nspredicate从实体获取数据

Ios 使用nspredicate从实体获取数据,ios,xcode,core-data,nspredicate,Ios,Xcode,Core Data,Nspredicate,我有一个名为“Songs”的核心数据实体,其中包含不同歌曲的详细信息。该实体的属性之一是“语言”。我想把所有西班牙语歌曲都拿来。但如果西班牙语歌曲的数量为零,那么它应该获取所有默认语言为英语的歌曲。如果我知道默认语言和所需语言,是否可以通过单个NSPredicate实现这一点。您可以这样做 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Songs" inManagedObjectContext:managed

我有一个名为“Songs”的核心数据实体,其中包含不同歌曲的详细信息。该实体的属性之一是“语言”。我想把所有西班牙语歌曲都拿来。但如果西班牙语歌曲的数量为零,那么它应该获取所有默认语言为英语的歌曲。如果我知道默认语言和所需语言,是否可以通过单个NSPredicate实现这一点。

您可以这样做

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Songs" inManagedObjectContext:managedObjectContext];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];

    //here strLanguage is string with the name of selected language
    NSPredicate * predicate  = [NSPredicate predicateWithFormat:@"Language == %@",strLanguage]; 
    [request setPredicate:predicate];
    [request setEntity:entity];

    NSMutableArray* mutableFetchCategory = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

if ([mutableFetchCategory count] > 0) 
    {

        for (NSManagedObject *info in mutableFetchCategory)
        {
             NSLog(@"%@",info);
             //Extract data from  each "info" object and store it in an array and display it in tableview
        }
}

else

{
    // Repeat the same code [or u can use functions for reusability] with language "English".
}
你也可以参考这个