gpt4 book ai didi

ios - 将 mysql 查询传输到 NSPredicate

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:12:46 24 4
gpt4 key购买 nike

我正在编写 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com