Tôi đang cố gắng viết một phương thức cố gắng truy xuất một đối tượng dựa trên một biến vị ngữ sử dụng biến (như một phần của NSXMLParser). Mã này trông như thế này:Sử dụng biến cho Tên phần tử trong Dữ liệu cốt lõi Prutate
tôi có các biến này được định nghĩa trong lớp:
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSString *model;
@property (strong, nonatomic) NSString *element;
Bây giờ trong phương pháp này, tôi thiết lập các yêu cầu như thế này:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.model inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
Thách thức hiện nay - những gì tôi muốn để có thể làm là:
// DOES NOT WORK
[request setPredicate:[NSPredicate predicateWithFormat:@"%@ == %@", self.element,string]];
B ut không trả lại bất kỳ kết quả nào. Sau khi một số mucking xung quanh, tôi nhận thấy rằng này không công việc:
if ([self.element isEqualToString:@"name"]) {
[request setPredicate:[NSPredicate predicateWithFormat:@"name == %@", string]];
}
này nói với tôi rằng self.element
của tôi được thiết lập một cách chính xác (? Tôi nghĩ), nhưng mà vị ấy không thích phía bên tay trái của biểu thức là một biến.
Tôi cũng đã cố gắng:
[request setPredicate:[NSPredicate predicateWithFormat:@"%s == %@", [self.element UTF8String],string]];
... chỉ để xem nếu có lẽ nó ưa thích một chuỗi. Tôi cũng không thể làm công việc đó.
Là những gì tôi đang cố gắng thậm chí có thể? Tôi đã đọc nhiều nhất có thể trong tài liệu Core Data và tôi không thể tìm thấy bất kỳ mã mẫu nào theo cách này, nhưng tôi cũng không tìm thấy gì để nói rằng điều đó là không thể.
EDIT: và bây giờ đoạn code làm việc:
[request setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", self.element,string]];
Điều này là hoàn hảo, cảm ơn. Phần thông tin cụ thể làm cho mã của tôi hoạt động là biến% K xử lý đối số dưới dạng khóa thay vì giá trị. Bây giờ làm việc =) – valdarin
bạn đang chào đón :) Dữ liệu cốt lõi và Predicates là công nghệ tuyệt vời và bạn có thể làm tất cả mọi thứ với họ ... – matteodv