Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 访问实例会引发异常-NSNSArray_Ios_Objective C_Exception_Nsarray_Nsdictionary - Fatal编程技术网

Ios 访问实例会引发异常-NSNSArray

Ios 访问实例会引发异常-NSNSArray,ios,objective-c,exception,nsarray,nsdictionary,Ios,Objective C,Exception,Nsarray,Nsdictionary,我是Objective-C的初学者,在字典和数组方面确实有些困难 我的目标是创建一个表视图,其中每个单元格都包含来自服务器的图片。pic的url来自一个JSON调用。我从苹果下载了一个名为“lazy table view”的示例,并尝试将其与我在Standford iOS类中找到的示例合并。到目前为止,除了图片,一切都正常。当我尝试访问图标时,Xcode会引发以下异常: -[__NSCFDictionary Icon]: unrecognized selector sent to instanc

我是Objective-C的初学者,在字典和数组方面确实有些困难

我的目标是创建一个表视图,其中每个单元格都包含来自服务器的图片。pic的url来自一个JSON调用。我从苹果下载了一个名为“lazy table view”的示例,并尝试将其与我在Standford iOS类中找到的示例合并。到目前为止,除了图片,一切都正常。当我尝试访问图标时,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
不知何故,这似乎与类型有关。尝试访问数组,同时访问字典或类似内容。我在stack上找到了一些相关的帖子,但到目前为止还无法解决


谢谢你的帮助

self.photos中存储的对象似乎是字典对象而不是ClRecord对象。您得到的错误表明您正在对dictionary对象调用Icon方法

检查照片数组的填充位置,确保将ClRecord对象而不是字典对象放入其中。

您可以执行
NSLog(@“我的照片数组是----%@”,self.photos)
这将为您提供阵列中的确切内容。

案例1:如果您有一个dictionary对象,那么:-
您应该执行
NSDictionary*dict=self.photos[indexPath.row]
ClRecord*ClRecord=[dict objectForKey:@“YourKeyForImage”]

案例2:如果您有预期的图像,那么请确保导入ClRecord头文件,在指定的[indexPath.row]索引处有非nil对象以及其他必要的初始化。

希望这有帮助

这可能是正确的,我更改了以下行:NSDictionary*photos=self.photos[indexPath.row];to:ClRecord*ClRecord=self.photos[indexPath.row];并将CLRecord声明为NSObject的。我还想知道,为什么ExalMP的标题文本仍然有效。问题是,斯坦福大学的例子使用的是NSDictionary,而苹果的例子使用的是数组,我不知道在这种特殊情况下如何合并这些例子。你能告诉我如何解决这个问题吗?我最近发现了这篇文章,你可能会觉得有用。。。