Tôi đang gặp khó khăn khi tìm tài liệu hoặc ví dụ về việc tạo đối tượng được quản lý mới, đặt giá trị của nó và lưu vào máy chủ bằng Restkit.Làm cách nào để tạo/đăng đối tượng được quản lý mới lên máy chủ bằng Restkit 0.20.0?
Tôi có một bài viết NSManagedObject:
@interface Post : NSManagedObject
@property (nonatomic, retain) NSNumber * postID;
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSString * text;
@end
Đây là cài đặt appdelegate tôi:
// ---- BEGIN RestKit setup -----
RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);
NSError *error = nil;
NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"My_App" ofType:@"momd"]];
// NOTE: Due to an iOS 5 bug, the managed object model returned is immutable.
NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
// Enable Activity Indicator Spinner
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
// Initialize the Core Data stack
[managedObjectStore createPersistentStoreCoordinator];
NSPersistentStore __unused *persistentStore = [managedObjectStore addInMemoryPersistentStore:&error];
NSAssert(persistentStore, @"Failed to add persistent store: %@", error);
[managedObjectStore createManagedObjectContexts];
// Configure a managed object cache to ensure we do not create duplicate objects
managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext];
// Set the default store shared instance
[RKManagedObjectStore setDefaultStore:managedObjectStore];
// Configure the object manager
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://localhost:3000/api/v1"]];
objectManager.managedObjectStore = managedObjectStore;
NSString *auth_token = [[LUKeychainAccess standardKeychainAccess] stringForKey:@"auth_token"]; // Getting the Auth_Token from keychain
[objectManager.HTTPClient setAuthorizationHeaderWithToken:auth_token];
[RKObjectManager setSharedManager:objectManager];
// Setup Post entity mappping
RKEntityMapping *postMapping = [RKEntityMapping mappingForEntityForName:@"Post" inManagedObjectStore:managedObjectStore];
[postMapping addAttributeMappingsFromDictionary:@{
@"title": @"title",
@"text": @"text",
@"id": @"postID"}];
RKResponseDescriptor *postResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:postMapping pathPattern:nil keyPath:@"post" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:postResponseDescriptor];
Bây giờ, Trong NewPostViewController của tôi khi tôi nhấp của tôi nút tôi có trong navbar của tôi "Save", những gì cần phải làm gì để lưu bài đăng này lên máy chủ của tôi?
Đây là những gì tôi đã thử, nhưng nó không hoạt động chính xác. Tôi nhập khối thành công và máy chủ của tôi đã POST, nhưng các lĩnh vực là con số không:
- (void)savePost {
RKManagedObjectStore *objectStore = [[RKObjectManager sharedManager] managedObjectStore];
Post *post = [NSEntityDescription insertNewObjectForEntityForName:@"Post" inManagedObjectContext:objectStore.mainQueueManagedObjectContext];
[post setTitle:@"The Title"];
[post setText:@"The Text"];
[[RKObjectManager sharedManager] postObject:post path:@"posts" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"Success saving post");
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"Failure saving post: %@", error.localizedDescription);
}];
}
Bạn có thể đăng nhập đối tượng kết quả ánh xạ không? –
Máy chủ của tôi phản hồi lại với Bài đăng mới được tạo nhưng không phải cho cả tiêu đề và văn bản. Kiểm tra giao diện điều khiển đầu ra của đường ray của tôi nó nhận được yêu cầu POST, nhưng văn bản và tiêu đề là không. – sbonkosky
bạn đã cố gắng truy cập vào chúng chưa? CoreData có thể tải nó một cách lười biếng. –