Como armazenar valores CGRect em NSMutableArray?

112

Como armazenar objetos CGRect em um NSMutableArray e, em seguida, recuperá-los?

Krishna Chaitanya Bandaru
fonte

Respostas:

289

Você precisa envolver as estruturas CG em NSValueclasses. Assim:

NSMutableArray* array = [NSMutableArray mutableArray];
[array addObject:[NSValue valueWithCGRect:CGRectMake(0,0,10,10)]];
CGRect someRect = [[array objectAtIndex:0] CGRectValue];
Jason Coco
fonte
mais exemplos aqui: iosdevelopertips.com/cocoa/…
WINSergey
Ótima resposta! seria ainda mais útil se você demonstrasse "unboxing" do NSValue armazenado de volta ao CGRect.
Motti Shneor
12
CGRect rect = CGRectMake( 5, 5, 40, 30 );
NSString* rectAsString = NSStringFromCGRect( rect );
CGRect original = CGRectFromString( rectAsString );

O que você acha dessa forma de armazenar as datas do CGRect?

Jane
fonte
2

Nós armazenar o CGRect, CGPoint, CMTimeobjetos em um NSMutableArray,

[arrayName addObject:[NSValue valueWithCGPoint:MyCGPoint]]

[arrayName addObject:[NSValue valueWithCGRect:MyCGRect]]

[arrayName addObject:[NSValue valueWithCMTime:MyCMTime]]

[arrayName addObject:[NSValue valueWithCMTimeRange:MyCMTimeRange]]

Vaibhav Sharma
fonte
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);
Tanvi Jain
fonte