Làm cách nào để lưu trữ các giá trị CGRect trong NSMutableArray?


Câu trả lời:


289

Bạn cần bao bọc các cấu trúc CG trong NSValuecác lớp. Vì thế:

NSMutableArray* array = [NSMutableArray mutableArray];
[array addObject:[NSValue valueWithCGRect:CGRectMake(0,0,10,10)]];
CGRect someRect = [[array objectAtIndex:0] CGRectValue];

các ví dụ khác ở đây: iosdevelopertips.com/cocoa/…
WINSergey

câu trả lời chính xác! sẽ hữu ích hơn nữa nếu bạn chứng minh "unboxing" của NSValue được lưu trữ trở lại CGRect.
Motti Shneor

12
CGRect rect = CGRectMake( 5, 5, 40, 30 );
NSString* rectAsString = NSStringFromCGRect( rect );
CGRect original = CGRectFromString( rectAsString );

Bạn nghĩ gì về cách này để lưu trữ ngày tháng trong CGRect?


2

Chúng tôi lưu trữ các CGRect, CGPoint, CMTimecác đối tượng trong một 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);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.