0

我是 iOS 编程新手,在尝试运行我的代码时遇到了这个错误。

[UIView _forgetDependentConstraint:]: message sent to deallocated instance 0xe65a0f0

我的项目中有两个视图。第一个视图用于JSONserialization填充tableView项目。我使用该方法didSelectRowAtIndexPath将相应的对象发送到下一个视图。

这些项目在第一个视图中显示得很好,到目前为止一切都很好。但是,当我在其中选择一个项目后尝试加载第二个视图时,tableView它会崩溃并返回上面写的错误。

viewDidLoad当我在in上设置断点时spelControllerView.mkategorier会得到 3 个对象,但是当它尝试对数组进行计数时kategorier,会抛出上面的错误消息。

这是我的代码:

ViewController.m第一个视图didSelectRowAtIndexPath

SpelControllerView *spelControllerView = [[SpelControllerView alloc] initWithNibName:@"SpelControllerView" bundle:nil];    
spelControllerView.title = [[jsonSnippet objectAtIndex:indexPath.row] objectForKey:@"CategoryName"];
spelControllerView.kategorier = [[jsonSnippet objectAtIndex:indexPath.row] objectForKey:@"Games"];
[self.navigationController pushViewController:spelControllerView animated:YES];

第二视图SpelViewController.m

    - (void)viewDidLoad{
[super viewDidLoad];
kategorier = [[NSMutableArray alloc] init];
tableViewControl.dataSource = self;
tableViewControl.delegate = self;}
    - (int)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;}

    - (int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [kategorier count];}

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{static NSString *cellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

cell.textLabel.text = [[kategorier objectAtIndex:indexPath.row] objectForKey:@"Games"];
return cell;}

SpelControllerView.h

    @interface SpelControllerView : UIViewController <UITableViewDelegate, UITableViewDataSource> {

UITableView *tableViewControl;
NSMutableArray *kategorier;}
    @property (nonatomic, retain) NSMutableArray *kategorier;

谢谢你的帮助!

更新:

这是我的 Json 文件。

    [
      {
        "CategoryName": "Arcade",
        "Games": [
          {
            "GameName": "Arcade game 1"
          },
          {
            "GameName": "Arcade game 2"
          },
          {
            "GameName": "Arcade game 3"
          }
        ], 
      },
      {
        "CategoryName": "FPS ",
        "Games": [
          {
            "GameName": "FPS game 1"
          },
          {
            "GameName": "FPS game 2"
          }
        ],

      },
      {
        "CategoryName": "Strategy",
        "Games": [
          {
            "GameName": "Strategy game 1"
          },
          {
            "GameName": "Strategy game 2"
          }
        ],

      },
      {
        "CategoryName": "C64",
        "Games": [
          {
            "GameName": "C64 game 1"
          },
          {
            "GameName": "C64 game 2"
          }
        ],

      }
    ]
4

1 回答 1

0

从 SpelViewController 中的 viewDidLoad 中删除以下行:

kategorier = [[NSMutableArray alloc] init];

从第一个 viewController 获取 JSON 数据后,您不应重新初始化 kategorier。

于 2013-04-01T16:07:03.717 回答