我正在嘗試編寫一種方法,它嘗試使用變量(作爲NSXMLParser的一部分)基於謂詞檢索對象。代碼如下所示:在覈心數據謂詞中使用變量作爲元素名稱
我有這些變量定義在類:
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSString *model;
@property (strong, nonatomic) NSString *element;
現在的方法,我設置了這樣的要求:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.model inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
現在的挑戰 - 我想能夠做的是:
// DOES NOT WORK
[request setPredicate:[NSPredicate predicateWithFormat:@"%@ == %@", self.element,string]];
乙不會返回任何結果。一些碴左右後,我注意到,這確實工作:
if ([self.element isEqualToString:@"name"]) {
[request setPredicate:[NSPredicate predicateWithFormat:@"name == %@", string]];
}
這告訴我,我的self.element
設置正確(我認爲),但謂語不喜歡錶達的左手邊是一個變量。
我也試過:
[request setPredicate:[NSPredicate predicateWithFormat:@"%s == %@", [self.element UTF8String],string]];
...只是爲了看看也許最好的字符串。我也無法做到這一點。
我試圖甚至有可能嗎?我已經儘可能多地閱讀了Core Data文檔,並且找不到任何示例代碼這樣做,但我也沒有找到任何說這是不可能的。
編輯: 現在的工作代碼:
[request setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", self.element,string]];
這是完美的,謝謝。使我的代碼工作的特定信息是%K變量,它將參數視爲鍵而不是值。現在工作=) – valdarin 2012-02-13 15:50:52
歡迎:)核心數據和謂詞是很棒的技術,你可以用它們做所有事情...... – matteodv 2012-02-13 15:55:39