自定义表格视图单元格中的 JSON 缩略图图像
Posted
技术标签:
【中文标题】自定义表格视图单元格中的 JSON 缩略图图像【英文标题】:JSON Thumbnail image in Custom Table View Cell 【发布时间】:2015-04-08 16:29:49 【问题描述】:我真的厌倦了试图解决这个问题,所以我想我需要一些帮助。我正在从我成功解析的 API 填充我的 ios 的每个单元格(可以毫无问题地检索文本或数字等简单的东西) 但是当我尝试为缩略图设置图像时,我遇到了一些错误。
这是我的代码:
NSString *imageUrl = [tempDictionary valueForKeyPath:@"files.url_thumb"];
NSURL *url = [NSURL URLWithString:imageUrl];
NSData *imageData = [NSData dataWithContentsOfURL:url];
UIImage *thumbNailImage = [UIImage imageWithData:imageData];
dispatch_async(dispatch_get_main_queue(), ^
[cell.ThumbImage setImage:thumbNailImage];
);
这是我控制台中的噩梦:
2015-04-08 13:14:26.450 WebTableView[4976:173380] -[__NSArrayI length]:
unrecognized selector sent to instance 0x79e18b90
2015-04-08 13:14:26.509 WebTableView[4976:173380] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI length]: unrecognized selector sent to instance 0x79e18b90'
*** First throw call stack:
(
0 CoreFoundation 0x036c9466 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x03352a97 objc_exception_throw + 44
2 CoreFoundation 0x036d12c5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
3 CoreFoundation 0x03619bc7 ___forwarding___ + 1047
4 CoreFoundation 0x0361978e _CF_forwarding_prep_0 + 14
5 CoreFoundation 0x035836cf CFStringGetLength + 143
6 CoreFoundation 0x036a9c8d _CFURLCreateWithURLString + 77
7 CoreFoundation 0x035952d3 CFURLCreateWithString + 35
8 Foundation 0x02f17999 -[NSURL(NSURL) initWithString:relativeToURL:] + 371
9 Foundation 0x02f17807 +[NSURL(NSURL) URLWithString:relativeToURL:] + 80
10 Foundation 0x02f177b1 +[NSURL(NSURL) URLWithString:] + 48
11 WebTableView 0x00111a8b -[TableViewController tableView:cellForRowAtIndexPath:] + 571
12 UIKit 0x01c26c9c -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 473
13 UIKit 0x01c26d7e -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 77
14 UIKit 0x01c0054b -[UITableView _updateVisibleCellsNow:isRecursive:] + 3034
15 UIKit 0x01c1aeb1 -[UITableView layoutSubviews] + 222
16 UIKit 0x01b907b1 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 608
17 libobjc.A.dylib 0x03368771 -[NSObject performSelector:withObject:] + 70
18 QuartzCore 0x009421cf -[CALayer layoutSublayers] + 152
19 QuartzCore 0x00936055 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 397
20 QuartzCore 0x00935eb0 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
21 QuartzCore 0x008941b6 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 284
22 QuartzCore 0x0089558a _ZN2CA11Transaction6commitEv + 392
23 QuartzCore 0x00895c56 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
24 CoreFoundation 0x035ec18e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
25 CoreFoundation 0x035ec0d0 __CFRunLoopDoObservers + 400
26 CoreFoundation 0x035e1b0a __CFRunLoopRun + 1226
27 CoreFoundation 0x035e137b CFRunLoopRunSpecific + 443
28 CoreFoundation 0x035e11ab CFRunLoopRunInMode + 123
29 GraphicsServices 0x04b3d2c1 GSEventRunModal + 192
30 GraphicsServices 0x04b3d0fe GSEventRun + 104
31 UIKit 0x01b049b6 UIApplicationMain + 1526
32 WebTableView 0x000dd6cd main + 141
33 libdyld.dylib 0x03e94ac9 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
【问题讨论】:
我想在这里得到一些帮助 cell.ThumbImage 是 UIImageView 吗?试试这个 - [cell.ThumbImage.image setImage:thumbNailImage]; 感谢您的回复@UttamSinha,我试过了......但让我失败了。 "'UImage' 没有可见界面声明了 'setImage:' 的选择器" 你得到的 imageUrl 是什么? @UttamSinha 我正在尝试获取“url_thumb”,这是一个图像,它位于“文件”"expenses_price" = 0; files = ( "date_modified" = "<null>"; entity = ad; "entity_id" = 1; file = 1; id = 1; target = main; type = 1; "url_thumb" = "http://dev.geoplem.com/images/pub/tn/538928ed35fde138844865.jpg"; ); latitude = "-34.57496820";
中
【参考方案1】:
我认为 valueForKeyPath: 返回一个对象数组。尝试记录 imageUrl 并检查你得到了什么。
如果你确信只有一个 url,那么你可以试试这个 -
NSString *imageUrl = [[tempDictionary valueForKeyPath:@"files.url_thumb"] lastObject];
其他尝试类似的方法 -
valueForKey:@"files"] valueForKey:@"url_thumb]
【讨论】:
感谢您的回复。我选择了第二个选项,因为我使用的是 url 图像列表。我得到了同样的错误:libc++abi.dylib: terminating with uncaught exception of type NSException
这比我想象的要复杂。
您记录了 imageUrl 吗? NSLog("%@", imageUrl);检查您是否在此处获取 url 或应用程序在此时终止。使用断点检查崩溃的流。
它在这里崩溃: NSURL *url = [NSURL URLWithString:imageUrl]; "信号 SIGABRT 线程:1"
崩溃报告说的一样吗?之前是由于 [__NSArrayI 长度],现在控制台日志是什么?另外,我只是在它要求身份验证用户名和密码的浏览器中点击图像 url。
这是现在的控制台日志:pastie.org/10088792 它受用户名和密码的保护,这些用户名和密码已经有了并且可以正常工作,我从 json 中得到了很好的文本。现在,这些图像让我头疼。我想指出,在我可以在每个单元格中获得一个简单的图像(重复)之前进行了一些尝试,但由于不是我想要做的,我编辑了代码以在每个单元格中都有每个相应的图像。再次感谢您以上是关于自定义表格视图单元格中的 JSON 缩略图图像的主要内容,如果未能解决你的问题,请参考以下文章
IOS/Objective-C:检测自定义表格视图单元格中的按钮按下?
如何使用分页更改 tableview 自定义单元格中的 imageview 图像。