循环遍历NSArray设置objectAtIndex值

Jos*_*ane 0 iphone loops objective-c nsmutablearray nsarray

我在NSMutableArray中有一堆NSStrings.我已将它们添加到数组中,现在我想循环遍历数组,获取其中的每个对象(字符串)并将它们设置为公共值@"No Lessons".

这就是我到目前为止的循环方式:但是如何获得对象然后设置呢?目前它相当简单,只是循环遍历数组,而不是改变任何东西.

NSInteger *count = [monLessonArrayA count];
    for (int i = 0; i < count; i++) {
        [monLessonArrayA objectAtIndex:i];
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢,谢谢.

编辑:

事实证明,某处有一个更大的问题.这是我正在使用的代码:

NSMutableArray* lessonArrayFuncTwo(id a, id b, id c, id d, id e, id f) {
    NSMutableArray* lessonsArray = [[NSMutableArray alloc] init];
    [lessonsArray addObject:a];
    [lessonsArray addObject:b];
    [lessonsArray addObject:c];
    [lessonsArray addObject:d];
    [lessonsArray addObject:e];
    [lessonsArray addObject:f];
    return lessonsArray;
}

- (void)viewDidLoad {
    [super viewDidLoad];

monLessonArrayA = lessonArrayFuncTwo(monP1A, monP2A, monP3A, monP4A, monP5A, monP6A);
    monLessonArrayB = lessonArrayFuncTwo(monP1B, monP2B, monP3B, monP4B, monP5B, monP6B);
    tueLessonArrayA = lessonArrayFuncTwo(tueP1A, tueP2A, tueP3A, tueP4A, tueP5A, tueP6A);
    tueLessonArrayB = lessonArrayFuncTwo(tueP1B, tueP2B, tueP3B, tueP4B, tueP5B, tueP6B);
    wedLessonArrayA = lessonArrayFuncTwo(wedP1A, wedP2A, wedP3A, wedP4A, wedP5A, wedP6A);
    wedLessonArrayB = lessonArrayFuncTwo(wedP1B, wedP2B, wedP3B, wedP4B, wedP5B, wedP6B);
    thuLessonArrayA = lessonArrayFuncTwo(thuP1A, thuP2A, thuP3A, monP4A, thuP5A, thuP6A);
    thuLessonArrayB = lessonArrayFuncTwo(thuP1B, thuP2B, thuP3B, thuP4B, thuP5B, thuP6B);
    friLessonArrayA = lessonArrayFuncTwo(friP1A, friP2A, friP3A, friP4A, friP5A, friP6A);
    friLessonArrayB = lessonArrayFuncTwo(friP1B, friP2B, friP3B, friP4B, friP5B, friP6B);

    NSInteger count = [monLessonArrayA count];
    for (int i = 0; i < count; i++) {
        [monLessonArrayA replaceObjectAtIndex:i withObject:@"test"];
    }
}
Run Code Online (Sandbox Code Playgroud)

所以现在我在这里使用一个函数来简单地将字符串放入几个数组中,然后它返回到循环中,它循环遍历数组并将文本放入对象中.你能看到任何问题吗?

加载应用程序崩溃后出现SIGBRT错误.

Chr*_*son 8

我认为您应该退后一步并重新考虑应用程序的设计,而不是弄清楚如何替换可变数组中特定索引处的对象.

您似乎正在尝试设计一个管理"课程"一周的应用程序,并且正在尝试通过暴力破解:将本周的课程表示为字符串数组的集合.

您应该考虑使用哪些替代表示来简化应用程序,而不是这样做.例如,您可以将特定日期的课程表示为特定索引中特定数组中的字符串,而不是将计划课程表示为课程类的实例,该课程不仅具有课程名称,还包含其当天以及是否为早晨或下午的课:

typedef enum {
    LessonMonday=1,
    LessonTuesday=2,
    LessonWednesday=3,
    LessonThursday=4,
    LessonFriday=5,
} LessonDay;

typedef enum {
    LessonSessionA=1,
    LessonSessionB=2,
} LessonSession;

@interface Lesson : NSObject
@property (readwrite, copy) NSString *title;
@property (readwrite) LessonDay day;
@property (readwrite) LessonSesson session;

- (id)initWithTitle:(NSString *)title day:(LessonDay)day session:(LessonSession)session;
@end
Run Code Online (Sandbox Code Playgroud)

现在,您只需要表示实际安排的课程,例如在scheduledLessons集合中.您的用户界面可以判断课程的安排时间并将该会话呈现为空,而无需 "填写"空课程; 如果您想稍后为特定插槽安排课程,只需创建一个新的课程实例来表示该插槽中的课程并存储它.这样也可以更轻松地更改现有课程的插槽,而无需推送数据:您只需更改课程的标题,课程的日期或会话,而不会打扰其他课程.(显然,在这样的事情中你也想检查冲突,但同样,这很简单.)

在您了解了如何在代码中对此类建模进行建模的基础之后,我强烈建议您先了解使用Core Data而不是手工完成.一旦你开始处理持久性和搜索之类的事情,让核心数据实际为你实现大部分数据模型要比你在问题中展示的方式或者我展示的方式更容易你在上面.例如,使用核心数据我可能将其建模为三个实体 - 课程,日和会话 - 其中一天与两个会话相关联,一个会话与课程相关联.