【发布时间】:2014-07-22 04:52:44
【问题描述】:
我有一个从服务器 API 获取的 NSDictionary 对象。数据是这样的,
"filesize_mp3":"60488"
当我使用以下代码检索文件大小时,应用程序崩溃。 obj.filesize 为长型。
obj.filesize = [[dict objectForKey:@"filesize_mp3"] longValue],
lldb 控制台,
2014-07-22 12:50:14.643 YouVoiceNews[2019:60b]-[__NSCFString longValue]:无法识别的选择器发送到实例 0x9bf8e10 2014-07-22 12:50:14.644 YouVoiceNews[2019:60b] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFString longValue]:无法识别的选择器发送到实例 0x9bf8e10”但是当我使用
obj.filesize = (long)[dict objectForKey:@"filesize_mp3"];
一切都很好。
所以我的问题是以上两种方式有什么区别。为什么第一个会导致应用崩溃?
提前致谢。
【问题讨论】:
-
读取错误。
NSString没有名为longValue的方法。请参阅NSString的文档。 -
一个不带警告不工作,一个不带警告不工作。
-
您的第二行代码并没有按照您的想法执行。尽管没有崩溃,但这是完全错误的。
-
非常感谢。 Xcode 的智能感知显示了一个 longValue 方法。我应该更多地关注文档。更改为 longLongValue 或 integerValue 即可。
标签: ios objective-c nsstring