我有这个简单的方法将数组的第一个元素放在最后,并将所有内容向下移动一个索引:
-(NSArray*)backUpNotes:(NSArray*)notes {
NSMutableArray* newNotes = [NSMutableArray arrayWithArray:notes];
Note* note = [newNotes objectAtIndex:0];
[newNotes removeObjectAtIndex:0];
[newNotes addObject:note];
return (NSArray*)newNotes;
}
数组注释包含两个Note *对象,即Note A和NoteB。
下线后
Note* note = [newNotes objectAtIndex:0];
注释包含注释A-符合预期。
下线后
[newNotes removeObjectAtIndex:0];
newNotes仅包含注释A ---这是不期望的。注意A位于索引0,我可以从调试器中看到它。如果我改为
[newNotes removeObjectAtIndex:1];
newNotes仍然仅包含Note A-这是预料之中的,因为在这种情况下我将删除NoteB。在我看来,我终生无法从此数组中删除NoteA。我什至尝试做:
[newNotes removeObject:note];
并且仍然有只包含注释A的newNotes-绝对是意外的。
任何见识都将是惊人的。
最佳答案
尝试这个:
NSMutableArray* newNotes = [NSMutableArray arrayWithArray:notes];
for (Note *n in newNotes) {
if ([n isEqual:note]) {
[newNotes removeObject:n];
break;
}
}
要么:
int x = 0;
NSMutableArray* newNotes = [NSMutableArray arrayWithArray:notes];
for (Note *n in newNotes) {
if ([n isEqual:note]) {
break;
}
++x;
}
[newNotes removeObjectAtIndex:x];