2009-12-18 15 views
12

Tôi muốn có thể ghi đè lên getter trên một chuỗi thuộc tính trên một trong các mô hình dữ liệu cốt lõi của tôi và bên trong getter tôi cần phải tìm ra những gì giá trị cho tài sản đó.Làm thế nào tôi có thể ghi đè lên một getter trên một tài sản khi sử dụng dữ liệu lõi?

@interface LabTest : NSManagedObject { 
} 
@property (nonatomic, retain) NSString *status; 
@end 

@implementation LabTest 

@dynamic status; 

- (NSString *)status { 
    NSString *tempStatus = [super valueForKey:@"status"]; 
    //do some checking here 
    return tempStatus; 
} 

@end 

Đoạn mã trên làm hỏng quy trình. Tôi đã thử một vài điều khác nhau, nhưng tôi nghĩ rằng tất cả chúng sẽ kết thúc trong một vòng lặp vô hạn với chương trình đang gặp mã 139.

Cách chính xác để truy cập vào thành viên dữ liệu lõi trong bộ thu như thế này là gì?

Trả lời

24

Bạn đã thử [self primitiveValueForKey:@"status"] thay vì [super valueForkey:@"status"]?

+0

Có những gì tôi đang tìm kiếm. Cảm ơn! –

+1

Kỳ lạ như thế nào nó không phải là một nguyên thủy ... –

1

Trình tạo đối tượng được quản lý trong x-mã có hộp kiểm thường không được chọn chỉ cho mục đích này.

Validation Methods http://www.nwcode.com/img/ValidationMethods.png

+0

Tôi không hoàn toàn làm xác nhận, vì tôi vẫn muốn trả lại một giá trị, tôi chỉ có thể muốn thay đổi nó một chút trong một số trường hợp. Cảm ơn. –

2

Chỉ trong trường hợp bất cứ ai đang tìm kiếm một biết thêm chút về cách ghi đè phương thức getter và hạ cánh trên trang này ...

Bên trong định nghĩa tài sản của bạn, bạn có thể chỉ định getter và setter như sau:

@property (nonatomic, retain, getter = getterMethodName, setter = setterMethodName) NSString *someString; 

Bạn chỉ có thể chỉ định trình khởi động, chỉ dành cho người đặt cược hoặc cả hai.

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