Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 -[\uu NSCFDictionary Title]:发送到实例的无法识别的选择器_Ios_Objective C_Json - Fatal编程技术网

Ios -[\uu NSCFDictionary Title]:发送到实例的无法识别的选择器

Ios -[\uu NSCFDictionary Title]:发送到实例的无法识别的选择器,ios,objective-c,json,Ios,Objective C,Json,我已经创建了一个应用程序,它根据从本地主机提取的JSON数据填充一个表。我可以使用搜索栏搜索这些数据,并添加了一个按钮,将行添加到另一个表中,我正在使用一个用户最喜欢的对象库。现在我已经完成了所有的工作,我正在尝试创建一个详细视图,当用户单击表中的一行时,他们将被带到一个新的视图控制器,然后他们可以查看对象的全部详细信息,因为初始表中的行在每行中只列出了标题和作者 我已经完成了这个步骤并创建了视图控制器ect,当我尝试在detaiViewController上填充一些UILabels时,我得到一

我已经创建了一个应用程序,它根据从本地主机提取的JSON数据填充一个表。我可以使用搜索栏搜索这些数据,并添加了一个按钮,将行添加到另一个表中,我正在使用一个用户最喜欢的对象库。现在我已经完成了所有的工作,我正在尝试创建一个详细视图,当用户单击表中的一行时,他们将被带到一个新的视图控制器,然后他们可以查看对象的全部详细信息,因为初始表中的行在每行中只列出了标题和作者

我已经完成了这个步骤并创建了视图控制器ect,当我尝试在
detaiViewController
上填充一些
UILabel
s时,我得到一个错误:

更改:

self.Title.text = self.paper.Title;
致:


使用awakeFromNib而不是viewDidLoad

文件字典可能存储其他文件字典,而不是文件对象。当您解析JSON时,它将解析到IOSSDK类,例如[]解析到NSArray、“”解析到NSString、{}解析到NSDictionary


因此,我猜您的JSON将解析为字典数组。它不能给你退稿。您必须将每个字典中的值分配给论文中的一个字典,并将其放入一个NSMutableArray*位置=[[NSMutableArray alloc]init]

_论文=[json objectForKey:@“论文”]


您正在通过从_文件检索元素来填充位置数组。实际上,_papers拥有NSDictionary的列表,在prepareforsgue中,您只需要从_papers中获得一个元素,它是一个字典,这就是它给出错误的原因。您必须存储这个locations数组并从中检索元素,因为您正在将json解析为循环中的纸面文档,并将其放入希望有帮助的位置。

My guess
[\u papers objectAtIndex:self.listTableView.indexPathForSelectedRow.row]
是一个
NSDictionary
对象,而不是
Paper
对象。这里有一个很好的提示:-[\u NSCFDictionary Title]:无法识别的选择器,这是您尝试向NSDictionary发送标题:消息时得到的结果:-)为什么要使用
属性,您了解它的作用吗?您需要显示如何解析JSON,如何填充
\u论文
。确定。您应该使用
位置
而不是
\u纸张
来查看UITableView。换句话说,
\u papers
是包含JSON的数组,
locations
是解析JSON的数组。所以
Paper*myPaper=[locations objectAtIndex:self.listTableView.indexPathForSelectedRow.row]
应该可以工作,但我建议在
self.listTableView
的datasource/delegate方法的其他地方使用location。这显然是正确的想法。当我直接在里面输入这个时,不会说“预期的方法读取字典元素在对象类型的论文中找不到”你有没有可能给出你论文类的一个片段?这应该是一些额外的信息现在我已经编辑了这个问题
self.Title.text = self.paper[@"Title"];