gpt4 book ai didi

ios - 使用 RestKit 0.20 进行 POST - NSManagedObjectContext 问题

转载 作者:行者123 更新时间:2023-11-29 03:39:46 26 4
gpt4 key购买 nike

我尝试使用 RestKit 发出 POST 请求,但是当我调用 RKObjectManagerpostObject 方法时,出现以下错误:

Can only use -performBlockAndWait: on an NSManagedObjectContext that was created with a queue.

RKManagedObjectRequestOperation类调用performBlockAndWait方法时,出现此错误。

这是我的代码:

RKObjectMapping *responseMapping = [RKObjectMapping requestMapping];
[responseMapping addAttributeMappingsFromDictionary:@{
// ...
}];

NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx
NSString *pathPattern = @"myPath";
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodPOST pathPattern:pathPattern keyPath:nil statusCodes:statusCodes];

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:@{
// ...
}];

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[MyClass class] rootKeyPath:@"" method:RKRequestMethodPOST];

NSURL *baseURL = [NSURL URLWithString:@"http://192.168.1.1:8080"];
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:baseURL];
[manager addRequestDescriptor:requestDescriptor];
[manager addResponseDescriptor:responseDescriptor];

NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
manager.managedObjectStore = managedObjectStore;

[managedObjectStore createPersistentStoreCoordinator];
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"mySqliteDatabaseFile"];
NSError *error;
NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:&error];

NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error);

[managedObjectStore createManagedObjectContexts];
managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext];

// POST to create
@try {
[manager postObject:visitReport path:@"myPath" parameters:nil success:^( RKObjectRequestOperation *operation , RKMappingResult *mappingResult ) {
NSLog(@"Success");
} failure:^( RKObjectRequestOperation *operation , NSError *error ){
NSLog(@"Failure - %@",error);
}];
}
@catch (NSException *exception) {
NSLog(@"error - %@", exception);
}

我不明白我的上下文的问题,欢迎任何帮助。谢谢。

最佳答案

好吧,我终于找到问题了:

我尝试POST的对象visitReport不是来自RestKit期望的NSManagedObjectContext。

为了解决这个问题,我创建了一个新对象:

MyObject *visitReportContext = [NSEntityDescription insertNewObjectForEntityForName:@"tableName" 
inManagedObjectContext:objectStore.mainQueueManagedObjectContext];
visitReportContext.Id = visitReport.Id
visitReportContext.title = visitReport.title
// etc..

然后,当我发布新对象时,它就可以工作了。但它不是很漂亮......我如何处理我的旧对象访问报告而不在此“RestKit上下文”中创建一个新对象?

关于ios - 使用 RestKit 0.20 进行 POST - NSManagedObjectContext 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18610595/

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