我將魔法記錄與Core Data一起使用。使用神奇記錄將圖像保存爲核心數據
在我的應用程序中,我只有一個實體具有一些字符串屬性。現在,我想爲這個實體添加一個圖像,但我不知道如何使用神奇記錄來做到這一點。我搜索了但在網上沒有發現任何東西。在我的應用程序中,所有數據都由用戶插入,所以圖像,照相機或照片庫也是如此。
如何使用魔法記錄和核心數據存儲圖像?
我將魔法記錄與Core Data一起使用。使用神奇記錄將圖像保存爲核心數據
在我的應用程序中,我只有一個實體具有一些字符串屬性。現在,我想爲這個實體添加一個圖像,但我不知道如何使用神奇記錄來做到這一點。我搜索了但在網上沒有發現任何東西。在我的應用程序中,所有數據都由用戶插入,所以圖像,照相機或照片庫也是如此。
如何使用魔法記錄和核心數據存儲圖像?
只需將圖像存儲在應用程序的文檔文件夾中,並將文件url中的字符串保存在覈心數據實體中。
上面的內容可以輕鬆完成。我可以給你的最好建議是創建一個新的示例項目,以保存和檢索CoreData
數據庫中的圖像。這樣你就知道這個過程是如何工作的。如果您嘗試在當前項目中嵌入此功能,則可能會忽略發生在哪裏的事件。
這是非常簡單的例子,我會期待你導入的代表在.h文件等自己
首先通過按鈕
-(IBAction)pickImage:(id)sender
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
[self presentModalViewController:imagePicker animated:YES];
}
一旦選擇了圖像發起UIImagePicker
,你可以使用的委託方法一個按鈕顯示它
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo
self.imageButton.imageView.image = selectedImage;
將其保存到CoreData
分配您UIImage
類型,您的數據庫中Transformable
輸入你的屬性然後保存managedObjectContext
鏈接,以幫助您:
CoreData Recipes Sample Project
希望這有助於, 祝你好運!
我發現我的答案是:
保存:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString*nomeImmagine = [[NSString alloc] initWithFormat:@"%@", self.fieldName.text];
NSString *pngFilePath = [NSString stringWithFormat:@"%@/%@.png",documentsDirectory, nomeImmagine];
UIImage *image = self.showSelectedImage.image; // imageView is my image from camera
NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
[data1 writeToFile:pngFilePath atomically:NO];
加載:
-(void) loadImageFromPathInsideView
{
// [self loadImageFromPathInsideView];
Ricetta* contact =[[DataManager sharedClass]dammiTuttaLaRicetta:self.indice];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString*nomeImmagine = [[NSString alloc] initWithFormat:@"%@", contact.nome2];
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [NSString stringWithFormat:@"%@/%@.png",documentsDirectory, nomeImmagine];;
UIImage* image = [UIImage imageWithContentsOfFile:path];
self.image.image = image;
}
忠告。在覈心數據中存儲圖像類型爲transformable
(又名NSImage
)類型很容易,但即使是低數量(超過20個)的應用程序性能也會很低,範圍從50k到200kb,平均爲100k。即使通過關係鏈接這些文件也很慢,因爲一個控制器經常與另一個控制器綁定。
上述存儲指向Documents文件夾的本地路徑名爲NSString
的方法對整體體驗來說是更好的方法。
這樣說,創建(約150×150)的縮略圖可以有利地創造一次並存儲爲transient
transformable
NSImage
,而不是裝載biggy,做一個對即時調整的次數。可以很容易地觀察到表演可以在一張持有50張縮略圖的表格中上下滾動。
所以我的屬性「照片」是字符串類型? – Totka
沒錯。您也可以將其稱爲「photoFileName」或「photoPath」... Apple建議僅在Core Data中存儲非常小的圖像,如縮略圖,並將此技術用於較大的圖像。 – Mundi
你可以發佈一些示例代碼來做到這一點嗎? – Totka