Tôi đang cố gắng để có được RestKit và CoreData để làm việc cùng nhau. Tôi đang nhận được gần hơn, nhưng tôi nhận được lỗi sau:Thực thể (null) không tuân thủ mã hóa khóa giá trị cho "tiêu đề" chính
CoreData: error: Failed to call designated initializer on NSManagedObject class 'Book'
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
'[<Book 0x8454560> valueForUndefinedKey:]: the entity (null) is not key value coding-compliant for the key "title".'
Dường như với tôi rằng nó đang tìm lớp Sách của tôi thành công, và nó có một tài sản tiêu đề. Tôi đang làm gì sai?
Books.xcdatamodel
Book
title: String
Tôi có một url tại localhost:3000/books/initial
trả sau (JSON)
[{title:"one"}, {title:"two"}]
Tôi đang sử dụng mogenerator để tạo ra các lớp học của tôi. Tôi chưa thêm bất kỳ điều gì vào số Book
, nhưng _Book
rõ ràng có thuộc tính tiêu đề được xác định.
Cuối cùng, đây là mã tôi sử dụng để tải yêu cầu.
RKObjectManager* objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://localhost:3000/"]];
RKManagedObjectStore* objectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:self.model];
objectManager.managedObjectStore = objectStore;
// Mappings
RKEntityMapping *bookMapping = [RKEntityMapping mappingForEntityForName:@"Book" inManagedObjectStore:objectStore];
[bookMapping addAttributeMappingsFromArray:@[@"title"]];
RKResponseDescriptor * responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:bookMapping pathPattern:@"books/initial/" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];
// Send Request
[objectManager getObjectsAtPath:@"/books/initial/" parameters:nil success:^(RKObjectRequestOperation * operation, RKMappingResult *mappingResult) {
NSLog(@"SUCCESS");
} failure: ^(RKObjectRequestOperation * operation, NSError * error) {
NSLog(@"FAILURE %@", error);
}];
EDIT: tôi đã thêm các dòng sau đây vào trước //Send Request
phần, được tìm thấy trong các ứng dụng RKTwitterCoreData
, nhưng tôi vẫn nhận được lỗi tương tự
// Other Initialization (move this to app delegate)
[objectStore createPersistentStoreCoordinator];
[objectStore createManagedObjectContexts];
objectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:objectStore.persistentStoreManagedObjectContext];
Đó phải là những gì tôi bị thiếu. Tôi đang cố gắng tìm nó trong ứng dụng twitter. Tất cả những gì tôi có là ở trên + mẫu dữ liệu cốt lõi mặc định. –
Tôi đã thêm 'createManagedObjectContexts' nhưng tôi không thấy nơi ví dụ sử dụng' addPersistentStore'. Nó vẫn không hoạt động –