【问题标题】:Simple NSInteger and NSMutableArray question简单的 NSInteger 和 NSMutableArray 问题
【发布时间】:2011-08-12 21:35:50
【问题描述】:

我正在尝试使用另一个数组整数值作为索引来访问一个数组。

 NSInteger index=[appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter];
 int i = index;
 questionText.text = [[appDelegate.currentRiddlesContent objectAtIndex:i] objectForKey:@"question"];

//where appDelegate.randomRiddlesCounter is an NSInteger and appDelegate.randomRiddles is a NSMutableArray

但是,我收到了指向 int 转换警告的不兼容指针。我该如何解决上面的代码?我收到的警告来自第一行。

【问题讨论】:

    标签: objective-c arrays


    【解决方案1】:

    试试:

    NSNumber *index = [appDelegate.randomRiddles objectAtIndex: appDelegate.randomRiddlesCounter];
    int i = [index intValue];
    questionText.text = [[appDelegate.currentRiddlesContent objectAtIndex: i] objectForKey: @"question"];
    

    NSInteger 是一个整数类型,而不是一个对象。

    【讨论】:

    • 其实你打败了我,我正要写一样的答案。 ;)
    • @omz:哈哈!名誉的竞争在这里凶残。
    【解决方案2】:

    试试这个:

    int i = [index intValue];
    

    【讨论】:

      【解决方案3】:

      类似 NSArray 的对象只能存储 Objective-C 对象指针(即所有可以分配给 id 的东西)

      使用 objectAtIndex 获取对象,使用 indexOfObject:(id)anObject 获取对应的索引。

      这两条指令都有效:

      id bla = [appDelegate.randomRiddles objectAtIndex:appDelegate.randomRiddlesCounter];
      NSInteger index = [appDelegate.randomRiddles indexOfObject:myObject];
      

      第二个假设 myObject 至少是 id 类型 因此,您尝试将指针转换为 int。因此发出警告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 2011-06-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多