// Test listing all words with their sentence
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Word"
inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[fetchRequest setFetchLimit:10];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (Word *info in fetchedObjects) {
NSLog(@"Word object: %@", info.word);
Sentence *details = info.relatedToSentence;
NSLog(@"Sentence object: %@", details.sentence);
}
我有兩個名爲Word和Sentence的實體。在每個實體中分別有一個稱爲單詞和句子的屬性。關係是相反的,而不是可選的,並且是一對一的。核心數據一對一關係無法正常工作
我能夠分別從兩個實體提取記錄,但不知何故,我無法通過一個實體獲取相關對象,我做錯了什麼? 上面的代碼工作,它只打印出單詞對象的值,並且爲句子對象打印(空)...我使用sqlite作爲此數據庫的源。在建模我的模型之後,我填充了由Xcode創建的sqlite文件。
該代碼看起來不錯。如果'info.relatedToSentence'打印爲(null),那麼Word對象與句子對象無關。你是如何填寫sqlite文件的? –
@martin是的,我該如何建立關係?我通過在它們的表中插入字符串值zword和zsentence來填充它,即兩個單獨的表,稱爲ZWORD和ZSENTENCE。 – wagashi
爲什麼不使用核心數據來填充初始數據庫?編寫一個小的命令行工具,創建數據庫並創建託管對象和關係。不推薦直接修改sqlite文件,並且容易出錯。 - (在你的情況下,ZSENTENCE將有一個ZRELATEDTOWORD列,ZWORD將有一個ZRELATEDTOSENTENCE列,並且兩者都必須正確填寫。) –