gpt4 book ai didi

IOS/objective-C : Load one record from Core Data without loading table first

转载 作者:行者123 更新时间:2023-11-29 02:00:49 25 4
gpt4 key购买 nike

对于个人资料屏幕,我想从 Core Data 加载相当于详细信息页面的内容,而不必先加载表格。我在核心数据中有一个包含多个用户的实体/表。但我只对提取其中之一(当前用户)的个人资料数据感兴趣。我想直接加载它,而无需经历加载表和选择选择以及使用路径和索引行等过程。一旦我得到结果,我不想将它们显示为一行,而是分布不同的字段就像在详细信息页面中一样,在不同的元素中围绕页面。

谁能建议最好的方法?

我想我需要使用一个谓词来根据用户 ID 或用户名对相关用户进行排序。通常我使用 NSFetchedResultsController 来执行提取,但也许有一种方法可以使用 executefetchrequest 进行更简单的提取。以下代码改编 self 在 SO 上找到的内容。这是正确的做法吗?

 - (User *)userInfo:(NSDictionary *)usersList
inManagedObjectContext:(NSManagedObjectContext *)context
{
User *user = nil;

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Users"];
request.predicate = [NSPredicate predicateWithFormat:@"username = bob"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"last" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

NSError *error = nil;

NSArray *matches = [context executeFetchRequest:request error:&error];

if (!matches || ([matches count] > 1)) {
// handle error
} else {
user = [matches lastObject];
}

return user;
}

最佳答案

你的代码有什么问题吗?它没有什么作用?

根据您的描述,您提供的代码完全符合您的要求。

至于您关于加载表格的评论,您从未加载表格。 Core Data是一种对象模型设计。即使您将其配置为持久保存到 SQLite,您仍然永远不会“加载表”。您正在加载一组对象。

将核心数据视为 ORM 会在以后给您带来更多设计问题。它是一个对象图而不是 ORM。

The immediate error is I don't have the syntax right for calling the method. I am trying to call it in viewDidLoad with [self userInfo:?? inManagedObjectContext:(NSManagedObjectContext *)context but I don't know what to include as ??. However, before going crazy trying to get it to work, I wanted to find out if this was the right approach. Glad to hear that it is. Can you suggest how to call the method? I am fuzzy on what the dictionary is we are really calling here.

该方法是您定义的。你希望这本词典包含什么内容?它不是 Core Data API 的一部分,而是 View Controller 的一部分。

这个方法中的代码是相当标准的。对核心数据的简单获取。

如果这个方法不是你写的,那么我建议你去问写这个方法的人。

仅供引用,谓词中未使用该字典中的任何内容。这会是一项家庭作业吗?

关于IOS/objective-C : Load one record from Core Data without loading table first,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413141/

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