gpt4 book ai didi

objective-c - RestKit 实体映射和父实体映射

转载 作者:太空狗 更新时间:2023-10-30 03:45:57 25 4
gpt4 key购买 nike

我有一个 Person 类(firstName 和 lastName 的属性)和另一个实体 Worker(wage 和 title 的属性)。在我的核心数据模型中,Person 实体被设置为 Worker 实体的父实体。在我的 AppDelegate 中,我设置了我的映射...

RKManagedObjectMapping* personMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Person" inManagedObjectStore:objectManager.objectStore];
[personMapping mapKeyPath:@"firstName" toAttribute:@"firstName"];
[personMapping mapKeyPath:@"lastName" toAttribute:@"lastName"];
[objectManager.mappingProvider addObjectMapping:personMapping];

RKManagedObjectMapping* workerMapping = [RKManagedObjectMapping mappingForEntityWithName:@"Worker" inManagedObjectStore:objectManager.objectStore];
[workerMapping mapKeyPath:@"wage" toAttribute:@"wage"];
[workerMapping mapKeyPath:@"title" toAttribute:@"title"];
[objectManager.mappingProvider setMapping:workerMapping forKeyPath:@"workers"];

RKManagedObjectSeeder* seeder = [RKManagedObjectSeeder objectSeederWithObjectManager:objectManager];
[seeder seedObjectsFromFiles:@"people.json", nil];

...在 people.json 中...

{
"workers":
[
{
"firstName":"Rob",
"lastName":"Johnson"
},
{
"firstName":"John",
"lastName":"Roberts"
}
]
}

...现在当我运行它时没有对象被播种。如何表达 Worker 类与 Person 具有相同映射这一事实?我可以将它们添加到该映射中,但感觉不对。

同样在使用...注册 Person 映射时

[objectManager.mappingProvider addObjectMapping:personMapping];

...我不使用 RKManagedObjectMapping 方法 setMapping:forKeyPath: 因为我们永远不会在这个应用程序中体验到一个人,所以我们永远不会映射它。但我仍然希望它注册。对于 Person 的子实体。

最佳答案

您并没有告诉对象映射器对 firstNamelastName 字段做任何事情。您只为 wagetitle 定义了映射。为了使播种工作正常,您需要为 JSON 结构和 Web 服务定义映射,并添加如下内容:

[workerMapping mapKeyPath:@"workers.firstName" toAttribute:@"firstName"];
[workerMapping mapKeyPath:@"workers.lastName" toAttribute:@"lastName"];

然后,当您运行播种时,您的 worker 映射器将知道如何将这些值从您的 people.json 映射到您的新 Worker 对象。

关于objective-c - RestKit 实体映射和父实体映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638498/

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