我使用NSDictionary
收到AFNetworking
。那本词典有很多价值。
其中一个我认为是INT
或NSNumber
,不知道什么是自动转换。预期的数字是2和3,但不知怎的,我总是得到一个很长的数字......我尝试了所有我知道但可以找到的东西,但我不能让它在
cell.numberOfLikes.text
这些都是我尝试过但没有成功的事情。我会很感激一些指导
NSLog(@"%i",_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]);
NSLog(@"%i",[NSNumber numberWithInt:_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]]);
cell.numberOfDownloads.text = [NSString stringWithFormat:@"%i",_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]];
cell.numberOfLikes.text =_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]);
答案 0 :(得分:4)
指定的%i
格式适用于基本的整数数据类型。由于您拥有(或尝试创建)NSNumber
对象,因此可以使用%@
进行记录。 %@
用于格式说明符中的Objective-C对象。
但是,如果要将NSNumber
分配给文本字段,则无效。您需要将数字转换为NSString
。理想情况下,您应使用NSNumberFormatter
将NSNumber
转换为NSString
。
这样做:
NSNumber *likesNumber = _myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"];
NSString *numberText = [NSString stringWithFormat:@"%d". [likesNumber intValue]];
NSLog(@"Number: %@", numberText);
cell.numberOfLikes.text = numberText;
答案 1 :(得分:1)
有几点。
[NSString stringWithFormat:]
中使用的格式说明符,并且很少需要两者。int
值,char
值,char*
值(即C字符串),浮点值和Objective-C对象值。 (加上你很少使用的一些长的,无符号的等值。)int
的别名,通常可与int
互换。很多时候人们会对NSNumber(对象)和NSInteger(标量int)感到困惑 - 他们不相同。%
后跟一个或多个字符来指示如何格式化值(在以下值列表中)。 %d
或%i
是int
。 (%d
是首选。)%f
是一个简单的浮点值(但这些值的格式可能会变得更复杂)。 %s
是C风格的字符串(即char*
值)。 %@
用于格式化Objective-C对象。特别是,使用%@
来格式化NSString或(以获取默认表示)NSNumber。了解%@
在格式字符串中的工作原理非常重要。当格式解释器遇到它时,它会将值列表中的下一个项解释为指向Objective-C对象的指针,并调用该对象的description
方法。 NSString只返回description
的结果,而NSNumber返回一个NSString,表示数字值的字符表示。其他对象(所有Objective-C对象支持description
,如果只是默认情况下)返回对象类型的简单标识或对象内部值的表示。
因此,如果你有一个NSNumber,你可以用%@
直接格式化它,或者你可以提取数值(例如[someNSNumber intValue]
)然后适当地格式化该值(例如{{{ 1}})。执行后者的原因是,如果要指定数字的列宽(例如,%d
,将数字格式化为5位字段)。
有关各种格式说明符的一些(gory)详细信息,请参阅here。
答案 2 :(得分:0)
提示:%i
是int
的转化说明符。
其中一个我认为是INT或NSNumber,不知道什么是自动转换
现在回过头来阅读NSArray
的文档,考虑一下它是否可以包含int
,然后继续阅读。
因此字典中的对象是NSNumber
- >的实例。他们是Objective-C对象 - >它们是使用指针实现的。差NSLog()
尝试将指针值转换为整数。使用%@
来获取数字的描述,或使用%i
和[theNumber intValue]
来打印其整数值。