- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我认为我跳过了一个重要的步骤或调用了我的属性错误。在我的应用程序中,在使用登录信息创建 POST 对象后,我无法使用映射对象中的此信息(这意味着我得到的是空值)。我假设在创建发布请求和响应请求之后,我应该能够使用我从 NSObjectClass 中保存的值。
我的问题
如何在发布请求映射后保存值?如果有人可以向我提供如何使用 response.body 值的示例,那将非常有帮助。谢谢。
我的类(class)
#import <Foundation/Foundation.h>
@interface AccountsClass : NSObject
@property (nonatomic, strong) NSString *DeviceType;
@property (nonatomic,strong) NSString *HardwareId;
@property (nonatomic,strong) NSString *NickName;
@property (nonatomic,strong) NSNumber *HelpCreditsBalance;
@property (nonatomic,assign) BOOL GotRatingCreditBonus;
@property (nonatomic,strong) NSNumber *AccountId;
@end
这是我用于 POST 请求的方法
-(void)loadPostRequest
{
_StoreIdentifierForVendor = [[[UIDevice currentDevice]identifierForVendor]UUIDString];
_StoreTheModel = [UIDevice currentDevice].model;
_nickname = usernameTextField.text;
AccountsClass *AccountInfo = [[AccountsClass alloc] init];
AccountInfo.NickName = _nickname;
AccountInfo.HardwareId =_StoreIdentifierForVendor;
AccountInfo.DeviceType =_StoreTheModel;
AccountInfo.AccountId =nil;
AccountInfo.GotRatingCreditBonus = FALSE;
AccountInfo.HelpCreditsBalance = nil;
//this is where the POST request begins
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[AccountsClass class]];
[responseMapping addAttributeMappingsFromArray:@[@"NickName", @"HardwareId", @"DeviceType",@"AccountId"]];
NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); // Anything in 2xx
RKResponseDescriptor *AccountDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodAny pathPattern:nil keyPath:nil statusCodes:statusCodes];
RKObjectMapping *requestMapping = [RKObjectMapping requestMapping]; // objectClass == NSMutableDictionary
[requestMapping addAttributeMappingsFromArray:@[@"NickName", @"HardwareId", @"DeviceType",@"AccountId"]];
// For any object of class Article, serialize into an NSMutableDictionary using the given mapping and nest
// under the 'article' key path
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[AccountInfo class] rootKeyPath:nil method:RKRequestMethodAny];
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:@"http://10.15.1.105:XXXX"]];
[manager addRequestDescriptor:requestDescriptor];
[manager addResponseDescriptor:AccountDescriptor];
[manager postObject:AccountInfo path:@"/Accounts" parameters:nil success: ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
RKLogInfo(@"Load collection of Articles: %@", mappingResult.array);
[self performSegueWithIdentifier:@"SegueFromLoginToWelcomeView" sender:self];
NSLog(@"the firs tobject %@",[mappingResult firstObject]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
RKLogError(@"Operation failed with error: %@", error);
}];
RKLogConfigureByName("*", RKLogLevelTrace); // set all logs to trace,
}
在我的下一个 View Controller 中,这就是我尝试获取值的方式。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
AccountsClass *PrintloginName = [[AccountsClass alloc]init];
welcomeLabel.text =[PrintloginName NickName];
NSLog(@"visibility test %@",welcomeLabel.text);
}
控制台日志
2013-11-09 15:44:41.066 GuessTheImage[4913:70b] I restkit:RKLog.m:33 RestKit logging initialized...
2013-11-09 15:44:46.859 GuessTheImage[4913:70b] LoginViewController - Submit Action
2013-11-09 15:44:46.868 GuessTheImage[4913:70b] T restkit.network:RKObjectRequestOperation.m:148 POST 'http://10.15.1.105.XXXX/Accounts':
request.headers={
Accept = "application/json";
"Accept-Language" = "en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5";
"Content-Type" = "application/x-www-form-urlencoded; charset=utf-8";
"User-Agent" = "GuessTheImage/1.0 (iPhone Simulator; iOS 7.0.3; Scale/2.00)";
}
request.body=DeviceType=iPhone%20Simulator&HardwareId=0F9B444B-FA08-4422-B154-B8F6861D41FB&NickName=skrillex2
2013-11-09 15:44:47.410 GuessTheImage[4913:f03] D restkit.object_mapping:RKMapperOperation.m:378 Executing mapping operation for representation: {
AccountId = 1128;
DeviceType = "iPhone Simulator";
GotRatingCreditBonus = 0;
HardwareId = "0F9B444B-FA08-4422-B154-B8F6861D41FB";
HelpCreditsBalance = 50;
NickName = skrillex2;
}
and targetObject: <AccountsClass: 0x8b9aa00>
2013-11-09 15:44:47.412 GuessTheImage[4913:f03] T restkit.object_mapping:RKMapperOperation.m:321 Examining keyPath '<null>' for mappable content...
2013-11-09 15:44:47.413 GuessTheImage[4913:f03] D restkit.object_mapping:RKMapperOperation.m:301 Found mappable data at keyPath '<null>': {
AccountId = 1128;
DeviceType = "iPhone Simulator";
GotRatingCreditBonus = 0;
HardwareId = "0F9B444B-FA08-4422-B154-B8F6861D41FB";
HelpCreditsBalance = 50;
NickName = skrillex2;
}
2013-11-09 15:44:47.414 GuessTheImage[4913:f03] D restkit.object_mapping:RKMapperOperation.m:230 Asked to map source object {
AccountId = 1128;
DeviceType = "iPhone Simulator";
GotRatingCreditBonus = 0;
HardwareId = "0F9B444B-FA08-4422-B154-B8F6861D41FB";
HelpCreditsBalance = 50;
NickName = skrillex2;
} with mapping <RKObjectMapping:0x8b94680 objectClass=AccountsClass propertyMappings=(
"<RKAttributeMapping: 0x8b8b210 NickName => NickName>",
"<RKAttributeMapping: 0x8b8b230 HardwareId => HardwareId>",
"<RKAttributeMapping: 0x8b9cf20 DeviceType => DeviceType>",
"<RKAttributeMapping: 0x8b9cf40 AccountId => AccountId>"
)>
2013-11-09 15:44:47.415 GuessTheImage[4913:f03] D restkit.object_mapping:RKMappingOperation.m:851 Starting mapping operation...
2013-11-09 15:44:47.415 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:852 Performing mapping operation: <RKMappingOperation 0x8cad4c0> for 'AccountsClass' object. Mapping values from object {
AccountId = 1128;
DeviceType = "iPhone Simulator";
GotRatingCreditBonus = 0;
HardwareId = "0F9D844B-FA08-4422-B254-B8F6861F41FB";
HelpCreditsBalance = 50;
NickName = skrillex2;
} to object <AccountsClass: 0x8b9aa00> with object mapping (null)
2013-11-09 15:44:47.416 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:440 Mapping attribute value keyPath 'NickName' to 'NickName'
2013-11-09 15:44:47.416 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:429 Found transformable value at keyPath 'NickName'. Transforming from class '__NSCFString' to 'NSString'
2013-11-09 15:44:47.417 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:475 Skipped mapping of attribute value from keyPath 'NickName to keyPath 'NickName' -- value is unchanged (skrillex2)
2013-11-09 15:44:47.417 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:440 Mapping attribute value keyPath 'HardwareId' to 'HardwareId'
2013-11-09 15:44:47.417 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:429 Found transformable value at keyPath 'HardwareId'. Transforming from class '__NSCFString' to 'NSString'
2013-11-09 15:44:47.418 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:475 Skipped mapping of attribute value from keyPath 'HardwareId to keyPath 'HardwareId' -- value is unchanged (0F9D844B-FA08-4422-B254-B8F6861F41FB)
2013-11-09 15:44:47.418 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:440 Mapping attribute value keyPath 'DeviceType' to 'DeviceType'
2013-11-09 15:44:47.420 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:429 Found transformable value at keyPath 'DeviceType'. Transforming from class '__NSCFString' to 'NSString'
2013-11-09 15:44:47.420 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:475 Skipped mapping of attribute value from keyPath 'DeviceType to keyPath 'DeviceType' -- value is unchanged (iPhone Simulator)
2013-11-09 15:44:47.421 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:440 Mapping attribute value keyPath 'AccountId' to 'AccountId'
2013-11-09 15:44:47.421 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:429 Found transformable value at keyPath 'AccountId'. Transforming from class '__NSCFNumber' to 'NSNumber'
2013-11-09 15:44:47.421 GuessTheImage[4913:f03] T restkit.object_mapping:RKMappingOperation.m:460 Mapped attribute value from keyPath 'AccountId' to 'AccountId'. Value: 1128
2013-11-09 15:44:47.421 GuessTheImage[4913:f03] D restkit.object_mapping:RKMappingOperation.m:920 Finished mapping operation successfully...
2013-11-09 15:44:47.422 GuessTheImage[4913:f03] D restkit.object_mapping:RKMapperOperation.m:404 Finished performing object mapping. Results: {
"<null>" = "<AccountsClass: 0x8b9aa00>";
}
2013-11-09 15:44:47.425 GuessTheImage[4913:4f0f] T restkit.network:RKObjectRequestOperation.m:218 POST 'http://10.15.1.105:XXXX/Accounts' (201 Created / 1 objects) [request=0.5414s mapping=0.0155s total=0.5654s]:
response.headers={
"Cache-Control" = "no-cache";
"Content-Length" = 178;
"Content-Type" = "application/json; charset=utf-8";
Date = "Sat, 09 Nov 2013 23:44:41 GMT";
Expires = "-1";
Pragma = "no-cache";
Server = "Microsoft-IIS/8.0";
"Set-Cookie" = "ARRAffinity=c390b30098dd5ae543210f9431ef79195d0285397a590e0175ce17a5951ea041;Path=/;Domain=e.azurewebsites.net, WAWebSiteSID=af7b9190880945d5938dd9725eecb045; Path=/; HttpOnly";
"X-AspNet-Version" = "4.0.30319";
"X-Powered-By" = "ASP.NET";
}
response.body={"DeviceType":"iPhone Simulator","HardwareId":"0F9D844B-FA08-4422-B254-B8F6861F41FB","NickName":"skrillex2","HelpCreditsBalance":50,"GotRatingCreditBonus":false,"AccountId":1128}
2013-11-09 15:44:47.425 GuessTheImage[4913:70b] I app:LoginViewController.m:107 Load collection of Articles: (
"<AccountsClass: 0x8b9aa00>"
)
2013-11-09 15:44:47.430 GuessTheImage[4913:70b] the firs tobject <AccountsClass: 0x8b9aa00>
2013-11-09 15:44:47.440 GuessTheImage[4913:70b] visibility test (null)
最佳答案
当你这样做时:
AccountsClass *PrintloginName = [[AccountsClass alloc]init];
您创建一个与任何映射实例无关的全新帐户类实例。
您应该拦截 segue(通过在触发 segue 的 View Controller 上实现 prepareForSegue:sender:
)以获取目标 View Controller ,然后传递映射对象(来自 mappingResult
) 给它。
关于ios - 在 RestKit 中成功查找后获取 Null 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19884651/
我正在使用 jQuery 的 $.ajax 函数来提交表单,它可以工作,但成功正是我遇到问题的地方。这是我的代码: $("#form").submit(function () { $.
我正在使用动态分页。 我需要在开始另一个事件之前取消 jQuery ajax 中的 success 事件。 我已经设置了一个等于$.ajax()的变量,在这样做之前,无论如何我都会调用abort。 问
如果我错了,请纠正我,但我对 $.post 成功/失败的理解是,如果 url 有效,这将返回成功。唯一会返回失败的情况是 url 无效。 如果这是真的,我如何验证成功函数?我问的原因是无论发生什么,即
HANDLE hFile = CreateFile(LPCTSTR("filename"), // name of the write
我正在使用以下代码发送短信。但这似乎不会在未发送短信时产生异常。例如,当没有足够的钱发送时,我仍然会去 smsSucces();有没有人知道解决此问题的方法以确保它已发送? private b
我正在尝试将字符串转换为 DateTime,在一台计算机上,它工作正常,但在另一台计算机上,它却不行!它运行的计算机运行的是 32 位 Windows 7,它不运行的计算机运行的是 64 位 Wind
我在页面上使用表单让用户输入将用于各种目的的图像的 url。我正在编写一个 ajax 方法来确定他们提供的 url 是否实际上是图像。到目前为止,我已经这样做了: $(document).on('re
我在 jquery 中对 php 脚本进行 ajax 调用。但是 php 脚本需要返回什么才能触发 ajax 中的成功/错误处理程序。所以这是 ajax: $.ajax({ data:
几个简单的问题: 对于 native 和 Flash/Silverlight 垫片来说,成功事件是“规范化”事件吗?记录的示例表明它仅适用于 Flash/Silverlight 对象准备就绪的情况。
这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the h
我尝试使用新的 Groovy Grape Groovy 1.6-beta-2 中的功能,但我收到一条错误消息; unable to resolve class com.jidesoft.swing.J
我正在使用 sequelize/nodejs/express/react 将实体持久化到 postgres 数据库 我有两个主要模型,国家和事件,我正在使用该应用程序,并且有一个名为“保存到数据库”的
我有以下代码,其中有 2 个电子邮件输入字段,我需要验证它们是否相同,并且使用 jQuery validate equalTo 成功运行。 Email Address
我正在尝试找出解决此问题的正确方法。 假设我们有一家元素商店。这些项目可以编辑、删除和创建。编辑或添加项目时,路线更改为/item/add 或/item/edit/{id}。 在 saga 成功添加或
这个问题已经有答案了: How do I return the response from an asynchronous call? (42 个回答) 已关闭 8 年前。 我有这段代码,警报工作正常
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
我想在单击超链接 (.remove_resort) 时(成功的 ajax 调用后)删除超链接的(父)跨度。 虽然ajax调用成功,但是最后span并没有被移除。这里出了什么问题? 请记住:有几个类
我正在编写一个非常简单的程序来将鼠标剪辑到指定的窗口。它从系统托盘运行,没有可见窗口。由于同一窗口会有多个实例,因此它使用 EnumWindows() 迭代每个顶级窗口,并将它们的 hwnd 与 Ge
我正在尝试找出如何执行 if 语句,以便如果玩家的击球率超过 0.250,则会为成功的 tr 添加一个类别。 我发现了以下堆栈问题,但我不确定可以使用或应该使用哪种方式以及如何使用这些堆栈问题。 ht
我是 Prolog 的新手,我正在尝试解决这个练习: Define a predicate greater_than/2 that takes two numerals in the notation
我是一名优秀的程序员,十分优秀!