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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.