gpt4 book ai didi

ios - 核心数据获取返回意外结果

转载 作者:行者123 更新时间:2023-11-29 03:20:37 24 4
gpt4 key购买 nike

使用核心数据,我创建了一个应该始终返回单个对象(基于特定谓词)的提取,但不知何故它返回了多个对象。我想知道我对核心数据谓词/比较如何工作的理解是否存在缺陷。

我的模型相关部分的概述(对于电子邮件客户端)

Entity: Thread
Relevant Attributes: thread.folder, thread.threadId

Entity: Folder
Relevant Attributes: folder.threads, folder.name

在核心数据中,不同的线程可以有相同的线程id,但应该总是有一个不同的文件夹。

Example: 

Thread 1: thread.threadId = 12345, thread.folder.name = @"inbox"
Thread 2: thread.threadId = 12345, thread.folder.name = @"important"

因此,我假设如果我获取一个线程,其 threadId 为 12345 且 folder.name 为“收件箱”,我应该只获取 1 个线程。但是在上述情况下我得到2。

这是我从核心数据中获取的方式:

- (Thread *)threadForFolder:(Folder *)folder threadId:(uint64_t)threadId
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[Thread entityDescriptionInManagedObjectContext:self.managedObjectContext]];
[request setPredicate:[NSPredicate predicateWithFormat:@"threadId == %llu && folder == folder", threadId, folder]];

NSArray *results = [self.managedObjectContext executeFetchRequest:request error:nil];
//ARRAY RETURNS TWO VALUES!?

//...more stuff
}

为什么这不起作用?

最佳答案

我想你只是打错了字。您只需说 folder == folder 而不是使用您传入的参数。当然,folder 始终等于 folder。

 [request setPredicate:[NSPredicate predicateWithFormat:@"threadId == %llu && folder == %@", threadId, folder]];

关于ios - 核心数据获取返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151839/

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