Iphone 循环NSArray设置objectAtIndex值

Iphone 循环NSArray设置objectAtIndex值,iphone,objective-c,loops,nsmutablearray,nsarray,Iphone,Objective C,Loops,Nsmutablearray,Nsarray,我在NSMutableArray中有一组NSString。我已经将它们添加到数组中,现在我想在数组中循环,获取其中的每个对象的字符串,并将它们设置为一个公共值@No-Lessons 这就是我到目前为止循环的方式:但是我如何获得对象然后设置它呢?目前它相当简单,只是在数组中循环,不改变任何东西 NSInteger *count = [monLessonArrayA count]; for (int i = 0; i < count; i++) { [monLesson

我在NSMutableArray中有一组NSString。我已经将它们添加到数组中,现在我想在数组中循环,获取其中的每个对象的字符串,并将它们设置为一个公共值@No-Lessons

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

NSInteger *count = [monLessonArrayA count];
    for (int i = 0; i < count; i++) {
        [monLessonArrayA objectAtIndex:i];
    }
非常感谢您的帮助,谢谢

编辑:

结果发现在某个地方有一个更大的问题。这是我正在使用的代码:

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"];
    }
}
现在我用一个函数把字符串放到几个数组中,然后返回到循环中,循环数组,把文本放到对象中。你能看到什么问题吗


加载应用程序时崩溃,出现SIGBRT错误。

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

似乎您正试图设计一个管理一周课程的应用程序,并试图通过蛮力实现这一点:将一周的课程表示为字符串数组的集合

<>而不是这样做,你可能应该考虑你可以用什么样的替代表达来简化应用程序。例如,您不必在特定索引的特定数组中将特定一天的课程表示为字符串,而是可以将计划课程表示为课程类的实例,该类不仅包含课程名称,还包含其日期以及上午或下午的课程:

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
现在,您只需要表示实际计划的课程,例如在scheduledLessons集合中。您的用户界面可以告诉您何时安排了课程,并将该课程呈现为空,而无需填写空课程;如果以后要为特定时段安排课程,只需创建新的课程实例来表示该时段中的课程并将其存储。这样做还可以更轻松地更改现有课程的课时,而无需将数据推到各个位置:只需更改课程标题、课程日期或课程,而不会干扰其他课程。显然,在类似这样的情况下,您也会希望检查冲突,但同样,这很简单


在您了解了如何在代码中对类似的内容进行建模的基本知识之后,我强烈建议您考虑使用核心数据,而不是手工操作。一旦您开始处理持久性和搜索之类的事情,让核心数据为您实际实现大部分数据模型将比您在问题中展示的方式或我在上面展示的方式容易得多。例如,使用核心数据,我可能会将其建模为三个实体——课、日和课时,其中一天与两个课时关联,一个课时与一个课时关联。

凭直觉,{monP1A、monP2A、monP3A、monP4A、monP5A、monP6A}中至少有一个被破坏了。很难说是怎么回事。