-1

こんにちは私はコアデータのいくつかの情報を引き裂くことができるようにしたいのですが、ファイルが正しく保存されているかどうかを確認する方法がわかりません。NSLogを使用してみましたが、呼び出されるとnullが返されます。保存したいuniqueIDとタイトルの辞書があります。これをデータベースのコンテキストと一緒に渡します。次に、データベースを並べ替えて、重複があるかどうかを確認します。重複していない場合は、ファイルを追加します。

+(VacationPhoto*) photoWithFlickrInfo: (NSDictionary*) flickrInfo inManagedObjectContext: (NSManagedObjectContext*) context{

//returns the dictionary
NSLog(@"Photo To Store =%@", flickrInfo);


VacationPhoto * photo = nil;

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"VacationPhoto"];
request.predicate = [NSPredicate predicateWithFormat:@"uniqueID = %@", [flickrInfo objectForKey:FLICKR_PHOTO_ID]];
NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:descriptor];

NSError *error = nil;
NSArray *matches =  [context executeFetchRequest:request error:&error];

if (!matches || [matches count] > 1) {
    // handle error
} else if ( [matches count] == 0){
    photo.title = [flickrInfo objectForKey:FLICKR_PHOTO_TITLE];
//Returns NULL when called 
    NSLog(@"title = %@", photo.title);
    photo.uniqueID = [flickrInfo objectForKey:FLICKR_PHOTO_ID];
//Returns NULL when called 
    NSLog(@"ID = %@", photo.uniqueID);

} else {
//If photo already exists this is called
    photo = [matches lastObject];
}

return photo;

}
4

2 に答える 2

0

コアデータの変更を確認する最も簡単な方法は、sqliteブラウザを使用することです

シミュレーターフォルダに移動し、アプリを見つけ、ドキュメントに移動して、

XCODE_SIMLATOR_XX

探す

アプリケーション

そこでアプリを見つけ、ドキュメントを開き、yourApp.sqliteを見つけて、sqliteブラウザーで開き、すべての変更を簡単に確認します。coredataはsqliteではないため、データ構造を編集することはお勧めしません。sqliteを使用してデータを保存するだけです。 、ただし、コアデータのオブジェクトアプローチに慣れる必要があります;)

幸運を

于 2012-08-28T03:50:47.853 に答える
0

データベースに情報を追加するときに、メソッドinsertNewObjectForEntityForNameを呼び出さなかったことが判明しました。これが、何も保存されなかった理由です。追加した後、NSLogsは適切な情報を提供していました

photo = [NSEntityDescription insertNewObjectForEntityForName:@"VacationPhoto" inManagedObjectContext:context];
    photo.title = [flickrInfo objectForKey:FLICKR_PHOTO_TITLE];
    NSLog(@"title = %@", photo.title);
    photo.uniqueID = [flickrInfo objectForKey:FLICKR_PHOTO_ID];
    NSLog(@"ID = %@", photo.uniqueID);
于 2012-08-28T04:05:57.437 に答える