使用 StringWithFormat 使用 float 和 long 生成不同的结果

Using StringWithFormat generates different results using float and long

提问人:alex 提问时间:4/18/2019 最后编辑:Surbhi Gargalex 更新时间:4/18/2019 访问量:67

问:

我创建了一个包含 4 个变量和 4 个字符串的类,它们与 4 个变量相同,但作为字符串,

在我声明的 h 文件中:

@property (assign) float num1;
@property (assign) float num2;
@property (assign) float num3;
@property (assign) long num4;

@property (nonatomic, assign) NSString *num1String;
@property (nonatomic, assign) NSString *num2String;
@property (nonatomic, assign) NSString *num3String;
@property (nonatomic, assign) NSString *num4String;

在 init 方法中,我传递了一个字典,我用它来创建变量,如下所示:

    num1 = [[dict objectForKey:@"num1"] floatValue];
    num2 = [[dict objectForKey:@"num2"] floatValue];
    num3 = [[dict objectForKey:@"num3"] floatValue];
    num4 = [[dict objectForKey:@"num4"] longValue];

    num1String = [NSString stringWithFormat: @"%.2f", num1];
    num2String = [NSString stringWithFormat: @"%.2f", num2];
    num3String = [NSString stringWithFormat: @"%.2f", num3];
    num4String = [NSString stringWithFormat:@"%ld",num4];

当我在这些行之后放置一个断点并检查字符串类型时,它被连接了,前 3 个是 NSString,num4String 是 NSMutableString !


当我尝试将此字符串传递给另一个变量时,我的问题实际上是

    NSString *copyOfNum4String = model.num4String;

我得到的不是字符串

Printing description of copyOfNum4String:
(NSString *) copyOfNum4String = 0x0000600001cb0740

这导致应用程序崩溃,因为我尝试做的下一件事是获取最后 4 个字符。

有人可以解释一下发生了什么,以及如何解决这个问题吗?(它必须很长,因为数字是 13 个字符长)


编辑: 这是值的字典打印:

[0] (null)  @"num1" : (long)2018420678770   
key NSTaggedPointerString * @"num1" 0xb79527f3826c0fa9
value   __NSCFNumber *  (long)2018420678770 0xa1c30c3a46fcec1d
Objective-C iOS7 StringWithFormat

评论

1赞 Max Pevsner 4/18/2019
您的代码无法编译。Objective-C 中的属性不是实例变量,因此必须以这种方式使用它们:或 .请同时提供 - 初始化它的方式对于正确理解问题至关重要。self.num1 =_num1 =dictionary
0赞 alex 4/18/2019
谢谢你的回答,代码编译。也许是因为它在 init 方法中,我在上面添加了字典值
0赞 Max Pevsner 4/18/2019
请提供初始化 .dictionary
0赞 alex 4/18/2019
NSMutableDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:self.connectionData options:NSJSONReadingMutableContainers error:nil];从网络呼叫的响应中获取字典
1赞 alex 4/18/2019
@Cy-4AH:我确实读过书,但要学的东西太多了,我无法全部了解。我错过了什么?

答: 暂无答案