Ios 访问实例会引发异常-NSNSArray
我是Objective-C的初学者,在字典和数组方面确实有些困难 我的目标是创建一个表视图,其中每个单元格都包含来自服务器的图片。pic的url来自一个JSON调用。我从苹果下载了一个名为“lazy table view”的示例,并尝试将其与我在Standford iOS类中找到的示例合并。到目前为止,除了图片,一切都正常。当我尝试访问图标时,Xcode会引发以下异常: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
-[__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,而苹果的例子使用的是数组,我不知道在这种特殊情况下如何合并这些例子。你能告诉我如何解决这个问题吗?我最近发现了这篇文章,你可能会觉得有用。。。