UIImageViewsを含むNSMutableDictionary ... NSMutableArrayに変更可能なコピーを追加しますか?代わりに?

私は辞書の中のキーの値で配列に単語を構築しようとしています。しかし、UIImageViewを "コピー"することができないので、私が好きなように動作しません。

辞書にある文字を配列に追加するときに、実際のオブジェクトの代わりにコピーが与えられれば、完璧です。同じ文字の複数のイメージを作成して辞書に追加したくない場合は、キー "s"または "a"で呼び出すことができなくなります。同じ文字を使用するには複数の配列が必要です当時。

私に何ができる?

//How I create the letters
        char s = 's';
        NSString *key = [NSString stringWithFormat:@"%c", s];
        alphabetS = [[UIImageView alloc] init]];
        [alphabetS setImage:[UIImage imageNamed:@"s.png"]];
        [allTilesDictionary setObject:alphabetS forKey:key];
        [alphabetS release];


//How I use the imageviews from the dictionary
    NSMutableArray *wordOne = [[NSMutableArray alloc] initWithObjects:[allTilesDictionary objectForKey:@"s"],[allTilesDictionary objectForKey:@"h"],[allTilesDictionary objectForKey:@"o"],[allTilesDictionary objectForKey:@"p"], nil];

編集:私の解決策。それは完全に動作します。

for (UIImageView *letters in wordOne)
{

    newLetter = [[UIImageView alloc] init];
    newLetter.image = letters.image;
    newLetter.userInteractionEnabled = YES;

    //I can now either lay them out wherever I want on the view, or add them to a new array.
}
0
なぜコピーが必要なのですか?考えてみてください。おそらくコピーを避けることができます。そうでない場合は、UIImageViewのカスタムサブクラスにNSCopyingプロトコルを実装する必要があります。それほど簡単ではないと思います。それについて読むここで
追加された 著者 Pavel Oganesyan,
私は完璧な解決策を考えたと思います。私は良い夜の睡眠をして、目を覚まし、シャワーでそれを考えました。私が思うように動作すれば私のソリューションを投稿し、人々は好奇心が強いです。私の解決策は、ダニエルが言っているようなものを使っています。
追加された 著者 Jason,
私のソリューションで更新されました。
追加された 著者 Jason,
なぜ画像ビューではなく画像を保存するのですか?画像は共有することができます。
追加された 著者 Hot Licks,

2 答え

for (UIImageView *letters in wordOne)
{

    newLetter = [[UIImageView alloc] init];
    newLetter.image = letters.image;
    newLetter.userInteractionEnabled = YES;

    //I can now either lay them out wherever I want on the view, or add them to a new array.
}
0
追加された
ああ先端に感謝します。 :)
追加された 著者 Jason,
しかし、あなたは不必要にUIImageViewsを "文字"で作成しています。その代わりに画像を入れてください。
追加された 著者 Hot Licks,

わずかに変更された元のコード:

//How I create the letters
        char s = 's';
        NSString *key = [NSString stringWithFormat:@"%c", s];
        [allTilesDictionary setObject:[UIImage imageNamed:@"s.png"] forKey:key];


//How I use the imageviews from the dictionary
    NSMutableArray *wordOne = [[NSMutableArray alloc] initWithObjects:[allTilesDictionary objectForKey:@"s"],[allTilesDictionary objectForKey:@"h"],[allTilesDictionary objectForKey:@"o"],[allTilesDictionary objectForKey:@"p"], nil];

そのコードの使用は、わずかに変更されました:

for (UIImage *letters in wordOne)
{

    newLetter = [[UIImageView alloc] init];
    newLetter.image = letters;
    newLetter.userInteractionEnabled = YES;

    //I can now either lay them out wherever I want on the view, or add them to a new array.
}

不要なUIImageViewsは作成されません。

0
追加された