Tôi đã gặp phải từ khóa này trong những dịp khác nhau. Tôi biết những gì nó giả sử để làm. Nhưng tôi thực sự muốn hiểu rõ hơn về nó.@NSManaged làm gì?
Những gì tôi nhận thấy về @NSManaged
- không dựa trên tài liệu, nhưng thông qua sử dụng lặp đi lặp lại:
- Nó kỳ diệu thay thế mã hóa giá trị then chốt.
- Nó tương đương với
@dynamic
trong Objective-C (mà tôi không biết nhiều về) - tôi cần nó để phân lớp
PFObject
từParse SDK
. Nó thường sử dụng KVC để đọc/ghi các giá trị từ/đến backend. - Tiền tố bất kỳ biến nào với
@NSManaged
sẽ đóng trình biên dịch khi tôi không khởi tạo trong trình khởi tạo.
Định nghĩa chính thức (trong Core dữ liệu của Apple Documents):
Core Data cung cấp lưu trữ cơ bản và thực hiện các thuộc tính trong lớp con của lớp NSManagedObject. Thêm thuộc tính @NSManaged trước mỗi định nghĩa thuộc tính trong lớp con đối tượng được quản lý của bạn tương ứng với một thuộc tính hoặc mối quan hệ trong mô hình Dữ liệu cốt lõi của bạn. Giống như thuộc tính @dynamic trong Objective-C, thuộc tính @NSManaged thông báo cho trình biên dịch Swift rằng việc lưu trữ và thực hiện một thuộc tính sẽ được cung cấp khi chạy. Tuy nhiên, không giống như @dynamic, thuộc tính @NSManaged chỉ có sẵn để hỗ trợ Core Data.
gì tôi nhận được từ đó:
biến với
@NSManaged
được miễn kiểm tra thời gian biên dịch cho một cái gì đó .
Tôi đã đọc các tài liệu chính thức và nhiều SO câu hỏi khác liên quan đến vấn đề này:
@synthesize vs @dynamic, what are the differences?
What is common case for @dynamic usage?
tôi theo bản năng nhận một số kịch bản mà tôi nên sử dụng nó. Tôi một phần biết những gì nó làm. Nhưng điều tôi tìm kiếm là hiểu rõ hơn về những gì nó làm.
Quan sát thêm:
Một PFObject
trong Parse SDK
dựa vào Key Value Coding
để truy cập giá trị của nó.Các PFObject
cung cấp accessors sau:
objectForKey:
let score = results.objectForKey("descriptionOfResult")
//returns the descriptionOfResult value from the results object
setObject:forKey:
results.setObject("The results for a physics exam", forKey: "descriptionOfResult")
//sets the value of descriptionOfResult
Để hiểu biết của tôi, @NSManaged
kỳ diệu hiểu rằng biến Tôi đã tuyên bố tự động sử dụng bộ truy xuất trên để get
và set
. Tôi muốn biết nó như thế nào (nếu những gì tôi hiểu là đúng), và bất cứ điều gì khác nó làm.
Bạn đã bao giờ tìm hiểu xem hành vi bạn đã quan sát (trong Quan sát thêm) đã đạt được như thế nào? @NSManaged sử dụng các trình tiếp cận chính xác như thế nào? – Jason
thuộc tính @NSManaged chỉ khả dụng cho hỗ trợ Dữ liệu cốt lõi không hoàn toàn đúng. Bạn cũng cần phải sử dụng nó cho các biến nhanh CoreAnimation mà bạn muốn tạo hiệu ứng trên: http://stackoverflow.com/questions/24150243/are-needsdisplayforkey-actionforkey-overrides-working-correctly – ambientlight