0

Core Data Recipes の例の AppDelegate に以下を追加しましたが、コンソールに結果が表示されません...アイデアはありますか?

#pragma mark -
#pragma mark TESTING RETRIEVAL OF RECIPE NAMES

- (NSArray *)allRecipes{
    NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:self.managedObjectContext];
    [request setEntity:entity];

    NSArray *result = [[NSArray alloc] init];
    result = [self.managedObjectContext executeFetchRequest:request error:NULL];    

    NSManagedObject *firstObject = [result objectAtIndex:0];
    NSLog(@"firstObject.name: %@", [firstObject valueForKey:@"name"]);

    }

XCode は、このメソッドの後に警告を表示します:「コントロールが非 void 関数の終わりに達しました」

それは結果が得られないことを意味すると思います...何も印刷されていないため、これは明らかです。

4

1 に答える 1

1

「名前」は、.xcdatamodel ファイル内のエンティティのクラス (エンティティから取得したい属性ではなく) と正確に一致していますか? アプリのデリゲートでセットアップ メソッドがエラーなしで完了していることを確認していますか? managedObjectContext != nil を確認しましたか? .xcdatamodel ファイルを編集しましたか? 最後にプログラムを実行してからそうしている場合は、アプリケーションのシミュレーターのドキュメント ディレクトリからデータ ファイルを削除するか、データモデルのモデル バージョンを追加する必要があります。

gerry3 が言ったように、最初の問題は、関数が配列を返さなければならないと指定し、何も返さないことです。

もう 1 つの問題は、クラス「name」の属性を取得した後、「name」を valueForKey として再度使用することです。属性「名前」を持つエンティティ「名前」は本当にありますか? エンティティに別の名前が付けられ、name がその属性である可能性が高くなります。この場合、NSEntityDescription メソッドの entityForName: 引数を変更する必要があります。

于 2009-10-23T07:00:41.217 に答える