2011-12-06 39 views
7

Cách kiểm tra xem một thuộc tính có tồn tại cho một thực thể cụ thể trong thời gian chạy hay không. Tôi sẽ thực hiện một thuộc tính có tên dateAddStamp, nhưng không phải tất cả các thực thể đều có thuộc tính này. Lớp này sẽ phục vụ như là một cơ sở cho các lớp học của các tổ chức khác ... Vì vậy, tôi muốn kiểm tra tại thời gian chạy Nếu tôi có thể gọi [self setPrimitiveValue: xxx forKey: xxx] hoặc không ... Cảm ơn.Cách kiểm tra xem thuộc tính có tồn tại khi chạy trên lớp con NSManagedObject

Trả lời

16
BOOL hasFoo = [[myObject.entity propertiesByName] objectForKey:@"foo"] != nil; 
3

Nhằm nâng cao câu trả lời OMZ, bạn cũng nên kiểm tra nếu tài sản là một thuộc tính (và không phải là một mối quan hệ có tên là @ "foo"):

BOOL hasFoo = ([[myObject.entity propertiesByName] objectForKey:@"foo"] != nil 
&& ([[[myObject.entity propertiesByName] objectForKey:key] isKindOfClass:[NSAttributeDescription class]])) 
5

trong nhanh chóng

let hasFoo = myObject.entity.propertiesByName.keys.contains("foo") 
1

Swift 3.2 Sử dụng chứa kiểm tra từ mảng khóa:

if managedObject.entity.attributeKeys.contains("yourKey") { 
    let value = managedObject.value(forKey: "youreKey") as! ClassName) 

} 

hoặc sử dụng if-phép:

if let data = managedObject.value(forKey: "youreKey") { 
    let value = data as! ClassName 
} 
Các vấn đề liên quan