代码之家  ›  专栏  ›  技术社区  ›  Oh Danny Boy

创建全局数组和迭代器

  •  0
  • Oh Danny Boy  · 技术社区  · 14 年前

    我正在尝试将整个NSManagedObjects数组加载到NSarray中,然后在点击按钮时使用整数迭代器迭代数组。Xcode似乎不喜欢在.h中声明integer和nsarray,然后在.m中使用不同的方法。

    我想知道一个有经验的开发人员在解决这样一个问题时会采取什么适当的方法。

    流量为: 1。将数据加载到数组中。 2。使用索引0处的信息设置标签。int i=0; 三。用户点击按钮;i++,在索引1检索元素。

    等等,直到数组结束,或者用户停止点击按钮。

    编辑:

    这是有效的代码,但我觉得不正确:

    xyz视图控制器.h

    @interface XYZViewController : UIViewController <NSFetchedResultsControllerDelegate>{
        int index;  
    }
    

    xyz视图控制器.m

    import "XYZViewController.h"
    
    - (void)function1{
        index = 0;
    }
    
    - (void)function2{
        index++;
    }
    
    -(void)function3{
        NSManagedObject *obj = [results objectAtIndex:index];
    }
    

    这是真的吗?它起作用,但不优雅;一点也不。

    2 回复  |  直到 14 年前
        1
  •  1
  •   king_nak    14 年前

    您是否在类外部的.h文件中声明了integer和nsarray?如果是这样,它将在包含该文件的每个编译模块中定义,这将导致链接时出现多个符号=>错误。

    解决方案:如果只需要一个.m文件中的nsarray/int,请将它们移到那里。否则将其声明为 extern 在.h中,并在中定义它们 恰好1 .m文件,如下所示:

    // 1.h
    extern int myInt;
    
    // 1.m
    #include "1.h"
    int myInt;
    // Use myInt
    
    // 2.m
    #include "1.h"
    // Use myInt
    
        2
  •  1
  •   Community Jaime Torres    7 年前

    您编写的代码是正确的,因为您希望尽可能保持变量的可见性是私有的。在这种情况下,您似乎只需要在 XYZViewController.m 文件。事实上,你可能会考虑在它之前 @private 使它对其他单位更不可见。