我有一个NSMutableArray,我在头文件中定义为:
@property (strong, nonatomic) NSMutableArray *tempPhotosArray;
然后我分配为:
_tempPhotosArray = [[NSMutableArray alloc] init];
我想知道的是,如果我转到replaceObjectAtIndex
该程序会抱怨出界。我想在该数组中只保留一定数量的项目,那么是否可以进行插入或替换?即如果在索引0处为空,则执行插入,如果有对象已经替换它?
由于
答案 0 :(得分:1)
我认为我同意哈尼·易卜拉欣。既然你说你只想在数组中保留一定数量的对象。那么你想要多少?
// add these code when you initialize the array
int aSetNumber = 5;
_tempPhotosArray = [[NSMutableArray alloc] init];
for (int i = 0; i < aSetNumber; i++)
{
[_tempPhotosArray addobject: [NSNull null]];
}
我想那时你可以做任何你想做的事情,我不知道在这种情况下你想做什么,但是我会检查那个位置的对象是否是NSNUll,如果是的话,替换它,如果没有,我不知道你想要他们什么
//use these code when you trying to insert the real object
if([[_tempPhotoArray objectAtIndex:anIndex] isKindOfClass: [NSNull class]])
{
//replace it here
}
答案 1 :(得分:1)
至于你为什么会收到错误,其他人写的都是准确的,但......
您想要的内容与NSArray
的内容不符。听起来你想要一个最多5个项目的列表,并且从不超过5个。如果你试图添加第6个项目,那么“最老的”就会消失。像“最近打开”的文件历史记录。您可以使用NSArray
制作此类功能,但这不是开箱即用的功能。
我建议制作自己的对象类。我不会为你编写所有代码,因为这听起来像编写家庭作业一样可疑,但我会指出你正确的方向。
FivePack
&lt; - 我们的班级
NSArray *storage;
&lt; - 我们存放数据的地方
// a public method which lets you add things.
- (void)addItem:(id)item {
int indexOfLastItemInArrayToSave = 4;
if (storage.length < 4)
indexOfLastItemInArrayToSave = length-1;
NSRange range = NSMakeRange(0, indexOfLastItemInArrayToSave);
NSArray *temp = [storage subArrayWithRange:range];
// now create a new array with the first item being "item" that
// was passed in and the rest of the array being the contents of temp.
// Then save that to storage.
}
您想要对数据做什么以及从新对象中写一些东西取决于您,因为我不确定您是如何做到的。
答案 2 :(得分:0)
最初创建数组时,数组中没有对象,因此无需替换。
答案 3 :(得分:0)
喜欢这个吗?
if([_tempPhotosArray count] > 0)
//replace object
else
//add object to array