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

Why I am Getting value of NSString like 0xb000000000000033 in Objective C

我是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.

这种类型的值怎么解

尝试 %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 *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])

// 我想你得到了那个键的 NSNumber 对象 "EmpId" 就这样试试吧,希望对你有用。

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

可能对你有帮助

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);

编码愉快...