1

我在这里有一个数组,例如我每列有 4 个图像,每个都响应其默认索引: 在此处输入图像描述

当删除图像时,例如索引 1。如下图所示:

在此处输入图像描述

索引变为 0,1,2 :

在此处输入图像描述

我想要的是 0,2,3 (这是原始数组索引):

在此处输入图像描述

谁能帮助我如何实现这一目标?

我的数组代码:

self.myImages = [NSMutableArray array];
for(int i = 0; i <= 10; i++) 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];

    NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"myImages%d.png", i]]; 
    if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){ 
        [images addObject:[UIImage imageWithContentsOfFile:savedImagePath]]; 
    } 
}     
4

2 回答 2

2

您可以在您的字典中放置另一个键,该键将在删除任何对象之前与索引相对应。显示它而不是索引,您将获得所需的结果。

编辑2:

self.myImages = [NSMutableArray array];
for(int i = 0; i <= 10; i++) 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [paths objectAtIndex:0];

    NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"myImages%d.png", i]]; 
    if([[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]){ 
        NSMutableDictionary *container = [[NSMutableDictionary alloc] init];
        [container setObject:[UIImage imageWithContentsOfFile:savedImagePath] forKey:@"image"];
        [container setObject:[NSNumber numberWithInt:i] forKey:@"index"];
        [images addObject:container];
        [container release]; // if not using ARC 
    } 
}

当您获得相应的对象时,您可以:

NSDictionary *obj = [images objectAtIndex:someIndex];
UIImage *objImg = [obj objectForKey:@"image"];
int objIndex = [[obj objectForKey:@"index"] intValue];
于 2012-06-26T08:41:07.797 回答
1

改用 NSMutableDictionary

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setValue:@"Item 0" forKey:@"0"];
[dictionary setValue:@"Item 1" forKey:@"1"];
[dictionary setValue:@"Item 2" forKey:@"2"];
[dictionary setValue:@"Item 3" forKey:@"3"];

//    0 = "Item 0";
//    1 = "Item 1";
//    2 = "Item 2";
//    3 = "Item 3";
NSLog(@"%@", dictionary);

//Remove the item 1
[dictionary removeObjectForKey:@"1"];

//    0 = "Item 0";
//     2 = "Item 2";
//    3 = "Item 3";
NSLog(@"%@", dictionary);
于 2012-06-26T08:38:52.853 回答