1

我正在使用核心数据来保存我的应用程序中包含的一组图像的文件名。

 if ([[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
    // app already launched
}
else
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    // This is the first launch ever
        NSArray *mainDishImages = [NSArray arrayWithObjects:@"egg_benedict.jpg", @"full_breakfast.jpg", @"ham_and_cheese_panini.jpg", @"ham_and_egg_sandwich.jpg", @"hamburger.jpg", @"instant_noodle_with_egg.jpg", @"japanese_noodle_with_pork.jpg", @"mushroom_risotto.jpg", @"noodle_with_bbq_pork.jpg", @"thai_shrimp_cake.jpg", @"vegetable_curry.jpg", nil];
        NSArray *drinkDessertImages = [NSArray arrayWithObjects:@"angry_birds_cake.jpg", @"creme_brelee.jpg", @"green_tea.jpg", @"starbucks_coffee.jpg", @"white_chocolate_donut.jpg", nil];
    for (NSString *imagePath in mainDishImages) {


    NSManagedObjectContext *context = [self managedObjectContext];
    NSManagedObject *newRecipe = [NSEntityDescription insertNewObjectForEntityForName:@"Recipe" inManagedObjectContext:context];
        [newRecipe setValue:imagePath forKey:@"imageFilePath"];
    }
    for (NSString *imagePath in drinkDessertImages) {
        NSManagedObjectContext *context = [self managedObjectContext];
        NSManagedObject *newRecipe = [NSEntityDescription insertNewObjectForEntityForName:@"Deserts" inManagedObjectContext:context];
        [newRecipe setValue:imagePath forKey:@"imageFilePath"];
    }
}

但我也允许用户通过使用设备相机拍照来添加项目。如何保存图像以便我的应用程序可以再次使用它,并将其集成到我现有的核心数据方案中?

谢谢

4

2 回答 2

2

只需将新图像保存到用户文档文件夹并将路径存储在核心数据中。使用 a 作为名称存储图像,UUID使其唯一。

获取核心数据引用的图像时,尝试使用 加载图像imageNamed,如果返回 nil 则尝试以完整路径加载图像。


请参阅有关s 的答案。UUID

请参阅有关文档文件夹的此答案。

于 2013-06-27T23:37:44.947 回答
1

将图像下载为数据后,使用此方法将该图像存储在文档目录中。下载完成每个图像后,将文件路径(代码块中提到的thumbNailAppFile)更新到您的实体中。希望这会帮助你。

 -(void *)writeDataAsFile:(NSData *)imageData
    {

        NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString * documentsDirectory = [paths objectAtIndex:0];
        NSString * thumbNailFilename = [NSString stringWithFormat:@"%@%@.png",@"SomePrefixforimage",[self createUUID]];
        NSString * thumbNailAppFile = [documentsDirectory stringByAppendingPathComponent:thumbNailFilename];  // Image local path 

        [imageData writeToFile:thumbNailAppFile atomically:YES];

    }



- (NSString *)createUUID // Create Unique id for image name.
{
    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return [(NSString *)string autorelease];
}
于 2013-06-28T04:05:09.727 回答