我是Objective-C的初学者,并且在字典和数组方面有点挣扎。
我的目标是创建一个表格视图,其中每个单元格都包含来自服务器的图片。 pic的url来自JSON调用。我从Apple下载了名为“lazy table view”的示例,并试图将其与我在Standford iOS Class中找到的那个合并。到目前为止,一切都有效,除了图片。一旦我尝试访问图标,Xcode就会引发以下异常:
-[__NSCFDictionary Icon]: unrecognized selector sent to instance 0x10b845ff0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary Icon]: unrecognized selector sent to instance 0x10b845ff0'
有问题的代码如下:
@interface FlickrPhotosTVC : UITableViewController
@property (nonatomic, strong) NSArray *photos;
@end
@interface ClRecord : NSObject
@property (nonatomic, strong) UIImage *Icon;
#define FLICKR_PHOTO_TITLE @"title"
ClRecord *clRecord = self.photos[indexPath.row];
cell.textLabel.text = [clRecord valueForKeyPath:FLICKR_PHOTO_TITLE]; // works
if (clRecord.Icon) NSLog(@"test"); // throws exeption
不知何故,这似乎与类型相关。在访问词典或类似内容时尝试访问数组。我在堆栈上发现了一些相关帖子,但到目前为止还无法解决。
感谢您的帮助!
答案 0 :(得分:0)
存储在self.photos中的对象似乎是字典对象而不是ClRecord对象。你得到的错误说你在字典对象上调用了Icon方法。
检查您填充照片数组的位置,以确保将ClRecord对象放入其中,而不是字典对象。
答案 1 :(得分:0)
你可以做NSLog(@"My photos array is ---%@",self.photos);
这将为您提供阵列中的确切内容。
案例1:如果你有字典对象,那么: - 你应该NSDictionary *dict = self.photos[indexPath.row];
ClRecord *clRecord = [dict objectForKey:@"YourKeyForImage"];
案例2:如果您有预期的图像,那么请确保导入ClRecord头文件,在指定的[indexPath.row]索引处有非零对象和其他必要的初始化。
希望这会有所帮助。 Link1