2010-03-22 23 views
20

Tôi có một ứng dụng MVC. Mô hình có thuộc tính là cấu trúc NSSize. Có thể ghi được như sau:NSValue làm phép thuật của nó như thế nào?

- (void)setSize:(NSSize)aSize; 

Chế độ xem đặt NSSize sử dụng khóa-giá trị mã hóa này. Tuy nhiên, bạn có thể không chính-trị-code một cấu trúc, vì vậy tôi bọc nó trong một -object NSValue như thế này:

[theView setValue:[NSValue valueWithSize:mySize] 
      forKey:@"theModel.size"]; 

Để hiểu biết của tôi, điều này không nên làm việc kể từ khi accessor hy vọng một struct và không phải là một NSValue . Nhưng nó hoạt động hoàn hảo. Điêu kỳ diệu.

Làm cách nào có thể?

+1

+1 đây là một câu hỏi hay, bởi vì mã hóa khóa-giá trị là một trong những điều thực sự tuyệt vời * về khung công tác Cocoa. Ngoài ra, +1 cho thẻ "ma thuật"! –

Trả lời

12

Cuộn xuống "Wrapping and Unwrapping Structs", nhưng đây là ý chính:

setValue:forKey: xác định loại dữ liệu theo yêu cầu của accessor thích hợp hoặc biến dụ cho phím định. Nếu kiểu dữ liệu không phải là một đối tượng, thì giá trị được trích xuất từ ​​đối tượng được truyền bằng cách sử dụng phương thức -<type>Value thích hợp.

Btw, cảm ơn vì đã đặt câu hỏi này! Đây là một trong những thứ ca cao mà luôn luôn "chỉ làm việc" và tôi chưa bao giờ nghĩ rằng nó không rõ ràng như thế nào nó đã được thực hiện.

+0

Bạn được chào đón. Thành thật mà nói, nó thổi tôi đi khi điều này đột nhiên "chỉ làm việc". – bastibe

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