Как хранить значения CGRect в NSMutableArray?

Ответы:

289

Вам нужно обернуть CG-структуры в NSValueклассы. Так:

NSMutableArray* array = [NSMutableArray mutableArray];
[array addObject:[NSValue valueWithCGRect:CGRectMake(0,0,10,10)]];
CGRect someRect = [[array objectAtIndex:0] CGRectValue];
Джейсон Коко
источник
другие примеры здесь: iosdevelopertips.com/cocoa/…
WINSergey
отличный ответ! было бы еще более полезно, если бы вы продемонстрировали «распаковку» сохраненного NSValue обратно в CGRect.
Мотти Шнеор
12
CGRect rect = CGRectMake( 5, 5, 40, 30 );
NSString* rectAsString = NSStringFromCGRect( rect );
CGRect original = CGRectFromString( rectAsString );

Что вы думаете о таком способе хранения дат CGRect?

Джейн
источник
2

Мы хранить CGRect, CGPoint, CMTimeобъекты в NSMutableArray,

[arrayName addObject:[NSValue valueWithCGPoint:MyCGPoint]]

[arrayName addObject:[NSValue valueWithCGRect:MyCGRect]]

[arrayName addObject:[NSValue valueWithCMTime:MyCMTime]]

[arrayName addObject:[NSValue valueWithCMTimeRange:MyCMTimeRange]]

Вайбхав Шарма
источник
1
Store string in array.and then get back string and convert that in CGRect back as per the need.
CGRect rect = CGRectMake( 5, 5, 40, 30 );
NSString* rectAsString = NSStringFromCGRect( rect );
NSMutableArray* array = [NSMutableArray mutableArray];
[array addObject:rectAsString];

For converting string in CGRect back use:-
CGRect rect9 = CGRectFromString(rectAsString);
Танви Джайн
источник