Получить целочисленное значение из NSInteger

Это в функции, которую я реализую

-(NSString *)DeleteFolder:(NSInteger)FolderId;

В моей реализации я создаю строку, используя FolderId

NSString *dbScript = [NSString stringWithFormat:@"Delete from Folders Where FolderId = %d",FolderId];

но я не получаю FolderId, вместо идентификатора папки я получаю очень длинное целое значение. Может быть указатель ссылки.

Подскажите пожалуйста, как получить идентификатор папки. Я что-то не так делаю?

2 ответа

NSInteger не является переносимым типом в том смысле, что вы никогда не узнаете, определен ли он как int, long, long long или что-то другое. Итак %d спецификатор конверсии, который предназначен исключительно для int, не подходит для печати NSInteger, Точнее, его использование приведет к неопределенному поведению. Вам нужно будет сделать явное приведение типа:

NSLog(@"Folder ID: %lld", (long long)FolderID);

(Я использовал long long потому что это самый длинный стандартный целочисленный тип.)

Попробуйте так:

NSInteger a=20;
NSLog(@"yourInteger=%ld",(long)a);
Другие вопросы по тегам