Tôi có một lớp Person (thuộc tính của firstName và lastName) và một thực thể Worker (thuộc tính của tiền lương và tiêu đề). Trong mô hình Dữ liệu cốt lõi của tôi, thực thể Person được đặt làm cha của thực thể Worker. Trong thiết lập appdelegate tôi tôi lập bản đồ của tôi ...Bản đồ đối tượng RestKit và ánh xạ thực thể cha mẹ
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];
... trong people.json ...
{
"workers":
[
{
"firstName":"Rob",
"lastName":"Johnson"
},
{
"firstName":"John",
"lastName":"Roberts"
}
]
}
... bây giờ khi tôi chạy này không có đối tượng là hạt giống. Làm thế nào để tôi thể hiện sự thật rằng lớp Worker có cùng ánh xạ với tư cách là Person? Tôi chỉ có thể thêm chúng vào bản đồ đó nhưng điều đó cảm thấy sai.
Ngoài ra khi đăng ký ánh xạ Người sử dụng ...
[objectManager.mappingProvider addObjectMapping:personMapping];
... Tôi không sử dụng phương pháp RKManagedObjectMapping setMapping: forKeyPath: bởi vì chúng ta sẽ không bao giờ trải qua chỉ là một người trong ứng dụng này và do đó chúng tôi sẽ không bao giờ lập bản đồ nó. Nhưng tôi vẫn muốn nó đăng ký. cho các thực thể con của Người.
Bạn có thể thử điều này: [[RKObjectManager sharedManager] .mappingProvider setObjectMapping: personMapping forKeyPath: @ "workers"]? Tôi mới để restkit nhưng theo như tôi hiểu nó, bạn phải bằng cách nào đó bao gồm các "công nhân:" trong keypath của bạn và nghĩ rằng điều này sẽ làm điều này. Tại sao nó được gọi là công việc nhưng không trả lại tiền lương và chức danh? – Pfitz
Cảm ơn, tôi sẽ thử! Đối với câu hỏi của bạn, tôi đã nhanh chóng ném nó lại với nhau và chưa thêm những giá trị đó. – rob5408
có thể bạn cũng có thể eperiment với điều này: [personMapping mapKeyPath: @ "workers.firstName" toAttribute: @ "firstName"]; – Pfitz