2011-07-04 37 views
10

Vì vậy, tôi có một mảng, đầy đủ các CGRects. Đó là một phần là tốt. Vấn đề là khi tôi đi lấy CGRects từ mảng, tôi nhận được các lỗi lạ. Kiểm tra mã của tôi. Cảm ơn trước.Chuyển đổi CGRect thành NSValue trong một mảng và ngược lại

NSArray *frameLocations = [NSArray arrayWithObjects: 
          [NSValue valueWithCGRect:CGRectMake(20, 20, 121, 124)], 
          [NSValue valueWithCGRect:CGRectMake(176, 20, 121, 124)], 
          nil]; 

Thần I có được khung trong một vòng lặp for, như thế này:

CGRect *imageFrame = [[frameLocations objectAtIndex:i] CGRectValue]; 

Tôi đã thử một loạt các biến thể khác nhau, lan rộng rằng dòng ra trên nhiều biến. Nhưng tôi không thể có được nó. Cảm ơn trước.

Trả lời

15

Hãy thử:

CGRect imageFrame = [[frameLocations objectAtIndex:i] CGRectValue]; 

Bạn nhận được một CGRect thực tế trở lại, không phải là một con trỏ đến một CGRect, bởi vì nó là một loại C kiểu nguyên thủy, không phải là một đối tượng Objective-C.

Ngoài mã của bạn có vẻ chính xác.

+0

Wow, tôi cảm thấy câm. Cảm ơn rất nhiều. Điều đó thực sự giúp tôi. – Andrew

+2

Đừng cảm thấy ngớ ngẩn - sự thật của vấn đề là một nguyên thủy kiểu C và đối tượng Objective-C thường chỉ là một quyết định thực tế, liên quan đến hiệu suất. Bạn sẽ có được một cảm giác mà là theo thời gian nhưng không có sự khác biệt vốn có trong quy ước đặt tên hoặc bất cứ điều gì như thế, do đó, nó dễ dàng nhầm lẫn giữa hai điều lúc đầu. – Tommy

+5

Vâng, họ nên đã gọi nó là Chủ quan-C. –

Các vấn đề liên quan