iOS使用JSON加载外部数据--Segue崩溃,错误:[[uuu NSCFNumber length]:发送到实例的选择器无法识别
我对编程一般来说是新手,尤其是iOS。另外,这是我第一次询问StackOverflow。我希望我不要一开始就错误地粘贴代码 在我的应用程序中,我需要在应用程序中加载并显示一些JSON 我成功地遵循了一个教程,并根据自己的需要对其进行了调整,因此目前我可以将一个数据列表加载到ListView中,但在细节视图中显示整个文章时遇到了一些问题 我有一个用于Post ViewController(列表)的类和一个用于my Details ViewController(详细信息)的类 到目前为止,这就是代码的问题部分 (PostsViewController): 它调用的方法位于DetaiViewController中:iOS使用JSON加载外部数据--Segue崩溃,错误:[[uuu NSCFNumber length]:发送到实例的选择器无法识别,ios,objective-c,json,storyboard,segue,Ios,Objective C,Json,Storyboard,Segue,我对编程一般来说是新手,尤其是iOS。另外,这是我第一次询问StackOverflow。我希望我不要一开始就错误地粘贴代码 在我的应用程序中,我需要在应用程序中加载并显示一些JSON 我成功地遵循了一个教程,并根据自己的需要对其进行了调整,因此目前我可以将一个数据列表加载到ListView中,但在细节视图中显示整个文章时遇到了一些问题 我有一个用于Post ViewController(列表)的类和一个用于my Details ViewController(详细信息)的类 到目前为止,这就是代码
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetailView"]) {
NSIndexPath *ip = [self.tableView indexPathForSelectedRow];
[[segue destinationViewController] getPost:[postsArray objectAtIndex:ip.row]];
}
}
- (void)getPost:(id)postObject {
currentPost = postObject;
}
我不知道我做错了什么,到目前为止,我对Obj-C、编译器等的内部工作机制还没有深入的了解
我这样做是为了测试一份入门级的工作,我希望每天都能学到更多
此外,整个错误是:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[\uu NSCFNumber length]:发送到实例0xb000000000000083的选择器无法识别”
请让我知道,如果我需要提供更多的信息,我为我的无知提前道歉
问候 谢谢大家
这就是问题所在,我有一个DetailsView方法,可以相应地更改标签。设置如下:
- (void)setLabels {
lblPostTitle.text = currentPost.postTitle;
lblPostBody.text = currentPost.postBody;
lblPostId.text = currentPost.postId;
}
调试时,我首先尝试记录currentPost.postTitle/Body/Id,结果成功了。所以我意识到在JSONplaceholder中,postID是一个数字
所以一旦我处理了这个数字,一切都很顺利
- (void)setLabels {
lblPostTitle.text = currentPost.postTitle;
lblPostBody.text = currentPost.postBody;
NSString* pi = currentPost.postId;
lblPostId.text = [NSString stringWithFormat: @"Post ID: %@", pi];
}
现在它工作了
无论如何,我感谢所有的评论,并将继续努力避免这些新手的错误
亲切的问候 名称
getPost
令人困惑。这相当于setPost
。错误消息只是说在某个地方传递了一个NSNumber
对象,而不是预期的NSString
对象。设置异常断点以找出错误发生的位置。换句话说,可能在currentPost
中的某个地方,您希望某个东西是字符串,而它实际上是一个数字(因此它在JSON中是一个数字,而不是字符串)来添加异常断点: