gpt4 book ai didi

ios - 使用 RKObjectManager 而不是 RKRequestOperation 的 get 方法 - RestKit

转载 作者:行者123 更新时间:2023-11-29 02:47:15 25 4
gpt4 key购买 nike

下面是使用 RKObjectRequestOperation 获取方法的函数,如何使用 RKObjectManager 编写相同的函数

 NSString *hostName = [NSString stringWithFormat:@"%@",[self getHostName]];

NSString *urls = [[NSString alloc] initWithFormat:@"%@/randomcollection/%@/0/%li",hostName,profileId,(long)noOfItems];


RKObjectMapping *responseMapping = [MappingProvider collectionMapping ];


RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodAny pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

NSURL *URL = [NSURL URLWithString:urls];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL cachePolicy:NSURLCacheStorageAllowedInMemoryOnly timeoutInterval:90.0f];
[request setValue:[GameManager sharedInstance].authenticatedUser.appTokenId forHTTPHeaderField:@"tokenId"];

RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];


[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
if (success) {
RKLogInfo(@"Load collection: %@", mappingResult.array);
}
} failure:^(RKObjectRequestOperation *operation, NSError *error) {

if (failure) {
failure(operation, error);
}

}];

[objectRequestOperation start];

编辑:这是我尝试过的,它给了我错误 * 断言失败 -[RKRouter URLWithRoute:object:]

      NSString *hostName = [NSString stringWithFormat:@"%@",[self getHostName]];  
NSString* urls = [[NSString alloc] initWithFormat:@"%@/userprofile/selectbyid/%@",hostName,profileId];

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:urls]];
[manager.HTTPClient setDefaultHeader:@"tokenId" value:[GameManager sharedInstance].authenticatedUser.appTokenId];

RKObjectMapping *responseMapping = [MappingProvider userProfileRespMapping ];


RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodGET pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

[manager addResponseDescriptor:responseDescriptor];


UserProfile * modelObject = [[UserProfile alloc] init];
[modelObject setProfileId:profileId];

[[RKObjectManager sharedManager] getObject:modelObject
path:nil
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
if (success) {
RKLogInfo(@"Load collection of Userprofiles: %@", mappingResult.array);
NSLog(@"Mapping Results %@",[mappingResult.array firstObject]);
UserProfile *currentUserProfile = (UserProfile *)[mappingResult.array firstObject];
success(currentUserProfile);
}
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {

if (failure) {
RKLogError(@"Operation failed with error: %@", error);
failure(operation, error);
}
}];

最佳答案

非常简单。它应该看起来像这样。这将为您提供一个起点。要获得更详细的答案,您应该具体化您的问题。

// Initial setup
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"your base url"]];

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:modelClass];

[mapping addAttributeMappingsFromDictionary:@{@"sourceProperty" : @"destinationProperty"}];

[manager addResponseDescriptor:
[RKResponseDescriptor
responseDescriptorWithMapping:mapping
method:RKRequestMethodGET
pathPattern:@"yourPath"
keyPath:@"jsonStructureDepending"
statusCodes:
RKStatusCodeIndexSetForClass(
RKStatusCodeClassSuccessful)]];

[[manager router].routeSet
addRoutes:@[
[RKRoute routeWithClass:[model class]
pathPattern:@"yourPath"
method:RKRequestMethodGET]];


//Within your controller or elsewhere
[[RKObjectManager sharedManager] getObject:modelObject
path:nil
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
}];

关于ios - 使用 RKObjectManager 而不是 RKRequestOperation 的 get 方法 - RestKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971369/

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