Jak mogę zapisać UIImage w NSDictionary?Jak mogę zapisać UIImage w NSDictionary?
Odpowiedz
tak można:
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:1];
UIImage *img = ...;
[dict setObject:img forKey:@"aKeyForYourImage"];
UIImage *imgAgain = [dict objectForKey:@"aKeyForYourImage"];
[dictionary setObject:yourImage forKey:@"whatever key you want"];
Nietestowane ;-)
[DICT setObject: obraz forKey: @ "ImageToStore"];
OK miałem ten problem niedawno i powyższe rozwiązania nigdy nie pracował dla mnie. Więc jeśli ktoś znajdzie swoją drogę tutaj, aby rozwiązać ten sam problem, oto jak to zrobić
NSDictionary *imageDictionary = @{
kImageKey: UIImageJPEGRepresentation(/*INSERT YOUR UIImage HERE*/,0.1)
};
// 0.1 reprezentuje jakość kompresji 0,0 będąc najniższego do 1,0 będąc najwyższą jakość
następnie dostać obraz z powrotem z użycia słownika
[UIImage imageWithData:[imageDictionary objectForKey: kImageKey]];
Nie ma potrzeby do tego. '' NSDictionary' może przechowywać wartości UIImage' dopóki nie spróbujesz aby utrzymać słownik w pliku plist – rmaddy
To zależy od tego, co chcesz zrobić ze swoim NSDictionary. Chociaż tak, możesz przechowywać UIImage w NSDictionary, możesz nie być w stanie użyć wspomnianego obiektu słownikowego w przypadkach, w których potrzebujesz go, aby dostosować się do określonych standardów.
Na przykład możesz użyć NSDictionary jako wartości w standardUserDefaults, ale tylko wtedy, gdy każdy obiekt w tym słowniku jest obiektem listy właściwości. UIImage nie jest obiektem listy właściwości. NSData to, możesz przekonwertować swój UIImage na NSData z UIImageJPEGREpresentation i przechowywać go w ten sposób, jak wspomniano powyżej.
Nie można zapisać obiektu UIImage w słowniku. Konieczne będzie przekonwertowanie obrazu na obiekt NSData i zapisanie go w słowniku.
NSData *imgData = UIImageJPEGRepresentation(yourImage, 0.0f);
[dictionary setObject:imgData forKey:@"your key"];
Niepoprawnie. 'NSDictionary' może przechowywać wartości' UIImage', o ile nie będziesz próbować utrzymywać słownika w pliku plist. – rmaddy
jakoś to nie działa :(dla mnie jest jakiś dodatkowy krok to trzeba zrobić? – raistlin