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 に答える