gpt4 book ai didi

ios - 获取核心数据关系

转载 作者:行者123 更新时间:2023-11-29 03:36:45 27 4
gpt4 key购买 nike

我想知道如何从我的核心数据关系中获取项目。我想它应该是一个字典或数组或返回的东西,这样你就可以拥有一对多的东西。

我对此感到非常困惑,我知道如何编写/读取单个对象,但这种关系有点令人困惑。

我想我已经成功地编写了与 coredata 的关系,但是现在我希望能够阅读它,看看我是否正确。我已经开始为此编写方法,但不知道实际该怎么做获取所有信息。

这是我到目前为止的代码..用于读取和写入

- (void)writeFin:(NSArray *)recivedProjectData ItemsData:(NSArray *)itemsData  {
// WRITE TO CORE DATA
NSManagedObjectContext *context = [self managedObjectContext];


for (NSDictionary *dict in recivedProjectData) {
project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:context];


project.proNumber = [dict valueForKey:@"ProNumber"];
project.projectDescription = [dict valueForKey:@"Description"];
// project.items = [dict valueForKey:@""]; // this is the relationship for project

}

for (NSDictionary *dict in itemsData) {
items = [NSEntityDescription insertNewObjectForEntityForName:@"Items" inManagedObjectContext:context];


items.Number = [dict valueForKey:@"Number"];
items.Description = [dict valueForKey:@"Description"];
items.comment = [dict valueForKey:@"Comment"];
items.project = project; // this is the relationship for items

[project addItemsObject:items];
}


NSError *error = nil;

if (![__managedObjectContext save:&error]) {
NSLog(@"There was an error! %@", error);
}
else {
NSLog(@"created");
}
}


- (NSMutableArray *)readFin {
NSManagedObjectContext *context = [self managedObjectContext];


NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:context];
[fetchRequest setEntity:entity];

NSError *error;

NSMutableArray *projectDictionaryArray = [[NSMutableArray alloc] init];


NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (ProjectList *projectList in fetchedObjects) {

NSMutableDictionary *tempProjectDictionaryArray = [[ NSMutableDictionary alloc] init];

[tempProjectDictionaryArray setObject:project.proNumber forKey:@"ProNumber"];
[tempProjectDictionaryArray setObject:project.description forKey:@"Description"];
[tempProjectDictionaryArray setObject:project.projectID forKey:@"ProjectID"];

[projectDictionaryArray addObject:tempProjectDictionaryArray];
}
return projectDictionaryArray;
}

所以重申一下,我想知道A,我的写方法看起来还好吗? B、如何从核心数据中获取/读取关系对象。

如有任何帮助,我们将不胜感激。

最佳答案

核心数据中的关系不是一个对象,它是一个恰好对应于模型中另一个对象的属性,而不仅仅是一个死胡同。据我所知,就检查你们的关系是否正常而言,您已经完成了大部分工作 - 您需要做的就是在您的项目列表中再添加一行

[tempProjectDictionaryArray setObject: project.items forKey:@"items"];

您要添加的对象将是一个 NSSet。完成设置后,您可以使用这样的循环检查事情是否正常

NSSet itemsForProject = projectDictionaryArray[someIndex][@"items"]
for (Item* currItem in [itemsForProject allObjects]) {

//access some property of the current item to make sure you have the right ones -- \
description for example
NSLog(@"%@", item.description);
}

关于ios - 获取核心数据关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19073531/

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