Использование StringWithFormat генерирует разные результаты, используя float и long - PullRequest
1 голос
/ 18 апреля 2019

Я создал класс, который содержит 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
...