gpt4 book ai didi

iOS 使用 JSON 加载外部数据——Segue 崩溃并出现错误 : [__NSCFNumber length]: unrecognized selector sent to instance

转载 作者:行者123 更新时间:2023-11-29 11:58:12 26 4
gpt4 key购买 nike

我是编程新手,尤其是 iOS。另外,这是我第一次在 StackOverflow 上提问。我希望我不会一开始就错误地粘贴代码。

在我的应用程序中,我需要加载一些 JSON 并将其显示到应用程序中。

我设法遵循了一个教程并根据我的需要对其进行了调整,因此我目前可以将数据列表加载到 ListView 中,但是我在详细信息 View 中显示整个帖子时遇到了一些问题。

我有一个用于 Post ViewController(列表)的类,另一个用于我的 Details ViewController(详细信息)。

到目前为止,这就是代码的问题部分(帖 subview Controller ):

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ([[segue identifier] isEqualToString:@"showDetailView"]) {

NSIndexPath *ip = [self.tableView indexPathForSelectedRow];

[[segue destinationViewController] getPost:[postsArray objectAtIndex:ip.row]];

}
}

它调用的方法在DetaisViewController中:

- (void)getPost:(id)postObject {

currentPost = postObject;

}

我不知道我做错了什么,直到现在我仍然没有深入了解 Obj-C、编译器等的内部工作原理。

我这样做是为了对入门级工作进行测试,我希望日复一日能学到更多东西。

此外,整个错误是这样的:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFNumber 长度]:无法识别的选择器发送到实例 0xb000000000000083”

如果我需要提供更多信息,请告诉我,我为我的笨拙提前道歉。

问候!

最佳答案

谢谢大家

这就是问题所在,我有一个 DetailsView 的方法可以相应地更改标签。它是这样设置的:

- (void)setLabels {

lblPostTitle.text = currentPost.postTitle;
lblPostBody.text = currentPost.postBody;
lblPostId.text = currentPost.postId;
}

调试时,我首先尝试对 currentPost.postTitle/Body/Id 进行 NSLog,它成功了。所以我意识到在 JSONplaceholder 中,postID 是一个数字 ( http://jsonplaceholder.typicode.com/comments?postId=1 )。

所以一旦我处理了这个数字,一切就都很好了。

- (void)setLabels {

lblPostTitle.text = currentPost.postTitle;
lblPostBody.text = currentPost.postBody;

NSString* pi = currentPost.postId;
lblPostId.text = [NSString stringWithFormat: @"Post ID: %@", pi];
}

现在可以了!

无论如何,我感谢所有评论,并将继续努力避免那些菜鸟错误!

亲切的问候!

关于iOS 使用 JSON 加载外部数据——Segue 崩溃并出现错误 : [__NSCFNumber length]: unrecognized selector sent to instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38207401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com