为啥我在 Objective C 中获取 NSString 的值,例如 0xb000000000000033

Posted

技术标签:

【中文标题】为啥我在 Objective C 中获取 NSString 的值,例如 0xb000000000000033【英文标题】:Why I am Getting value of NSString like 0xb000000000000033 in Objective C为什么我在 Objective C 中获取 NSString 的值,例如 0xb000000000000033 【发布时间】:2016-09-16 12:49:03 【问题描述】:

我是ios 的新手,我写过这样的代码

 NSString *Mobilenumber =[firstObj valueForKey:@"MobilNo"];
    NSLog(@"Mobile Number is =%@",Mobilenumber);
    NSString *Employeeid=[firstObj valueForKey:@"EmpId"];
    NSLog(@"Employee ID is =%@",Employeeid);

手机号码给了我正确的价值,而Employeeid给了我这样的价值0xb000000000000033。但是当我NSLog Employeeid 时,它的值显示为 3。

但是当我将它与另一个文本的值进行比较时

if ([EmployeeStr isEqual:techString])

它没有达到if 条件,但两个字符串都包含相同的值。如何解决这种类型的值0xb000000000000033。

【问题讨论】:

什么是firstObj 可能是第一个包含@"EmpId" 的Obj 不是字符串值...所以做一件事,只需输入 NSString *Employeeid = (NSString *)[firstObj valueForKey:@"EmpId "]; 可能它再次返回数字,您正试图在字符串中获取empId .. 您的EmpId 可能不是字符串。可能是NSNumber!! 【参考方案1】:

可能对你有帮助

NSString *EmployeeId = [firstObj valueForKey:@"EmpId"];
NSLog(@"Employee ID is =%@",EmployeeId);
NSString *strEmployeeId = [NSString stringWithFormat:@"%@", [firstObj valueForKey:@"EmpId"]];
NSLog(@"Str Employee ID is =%@",strEmployeeId);
NSString *castEmployeeId = (NSString *)[firstObj valueForKey:@"EmpId"];
NSLog(@"Cast Employee ID is =%@",castEmployeeId);

编码愉快...

【讨论】:

【参考方案2】:

// 我认为您获得了该键“EmpId”的 NSNumber 对象 就这样试试吧,希望对你有用。

 NSString *Employeeid = [NSString stringWithFormat:@"%@", [firstObj valueForKey:@"EmpId"]]

【讨论】:

感谢您的代码工作。【参考方案3】:
NSString *Mobilenumber = [NSString stringWithFormat:@"%@",[firstObj valueForKey:@"MobilNo"]];
NSLog(@"Mobile Number is =%@",Mobilenumber);
NSString *Employeeid=[NSString stringWithFormat:@"%@",[firstObj valueForKey:@"EmpId"]];
NSLog(@"Employee ID is =%@",Employeeid);

&然后比较它的工作......

if ([Employeeid isEqualToString:techString])

【讨论】:

【参考方案4】:

尝试%p 应该适用于任何指针 -

NSString *Mobilenumber =[firstObj valueForKey:@"MobilNo"];
    NSLog(@"Mobile Number is =%@",Mobilenumber);
    NSString *Employeeid=[firstObj valueForKey:@"EmpId"];
    NSLog(@"Employee ID is =%@",Employeeid);
NSString *address = [NSString stringWithFormat:@"%p", Employeeid];
 NSLog(@"Employee ID is =%@",address);

将其转换为整数并完成剩下的工作 -

NSUInteger myInt = [ Employeeid integerValue ];
char * ptr       = ( char * )myInt;

【讨论】:

我刚刚更改了 NSString *address = [NSString stringWithFormat:@"%@", Employeeid];我工作。感谢您的帮助。 @Muju 觉得有帮助,点个赞吧,对别人有帮助。

以上是关于为啥我在 Objective C 中获取 NSString 的值,例如 0xb000000000000033的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Objective-C 很难

从 TableView Objective C 中获取 IndexPath.Row [重复]

获取嵌套的自定义字段 JSON Objective C

如何从 TextField 获取十进制值并在 Objective C 中使用它进行计算

为啥说Objective-C很难学

为啥我们不能在 UITableView、Objective C 上检测到 UITouch 逻辑