我正在写mysql查询,可以正确获取信息,但是我不能为此编写NSPredicate,因为我不知道如何选择IN(选择)构造。

SELECT * FROM ZPHOTO WHERE ZPHOTOID IN (SELECT ZALBUMID FROM ZPHOTO) AND ZALBUMID = 0;

我接受所有行,其中albumID = 0,并且如果albumID包含此photoID。

和我的nspredicate的一部分:
NSEntityDescription *entity = [NSEntityDescription entityForName:[NSString stringWithFormat:@"%@",name] inManagedObjectContext:context];
etchRequest.predicate = [NSPredicate predicateWithFormat:@"photoId IN"]

更新:
逻辑:
有一个表:screenshot here。我需要返回一行,其中albumId = 0,并且如果在albumId实体中找到该行的photoId。在此示例中,我需要返回第一行。
逻辑:如果albumId = 0,则为相册;如果albumId!= 0,则表示该照片属于第一相册。因此,我需要退回所有相册,其中照片数量不为零。
使用该谓词,我只返回所有专辑,也返回没有照片的专辑。
"albumId = 0"

所以我需要过滤没有照片的相册。
请帮我

更新2:

返回没有照片的任何行,我认为(photoId IN%@)很麻烦,我认为他在ZPK中找到了,而在albumId实体中却找不到。
        NSFetchRequest *fr = [[NSFetchRequest alloc]init];
        fr.predicate = [NSPredicate predicateWithFormat:@"albumId != %i",statSubId]; // != 0
        [fr setEntity:entity];

        NSError *error;
        NSArray *albumIds = [context executeFetchRequest:fr error:&error];

        NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"photoId" ascending:YES];
        [fr setSortDescriptors:[NSArray arrayWithObject:sort]];

        fetchRequest.predicate = [NSPredicate predicateWithFormat:@"photoId IN %@ AND albumId == %i", albumIds,statSubId];

更新了3

这似乎是一个正确的解决方案。感谢你们!
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"albumId != %i",statSubId]; // != 0

NSError *error;
NSArray *albumIds = [context executeFetchRequest:fetchRequest error:&error];

NSMutableArray *albId = [NSMutableArray array];
for (Photo *photo in albumIds) {
    [albId addObject:photo.albumId];
}

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"photoId IN %@ AND albumId == %i", albId,statSubId];

最佳答案

我认为没有一种方法可以通过单个“核心数据”获取请求来实现。
您必须分两步执行此操作:

  • 使用albumId != 0获取所有对象,并将生成的id存储在albumIds数组中。
  • 使用谓词
    [NSPredicate predicateWithFormat:@"albumId == 0 AND photoId IN %@", albumIds]
    

    得到您想要的结果。
  • 关于ios - 将mysql查询转移到NSPredicate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17648892/

    10-10 20:37