2016-07-20 16 views
2

私はsaveInfoボタンをクリックすることにより、sqlite3のデータベースに私のイメージとテキストを保存しています。IOSイメージ表示

- (IBAction)saveInfo:(id)sender { 

    // Prepare the query string. 
    NSString *query; 

    if (self.recordIDToEdit == -1) { 

     query = [NSString stringWithFormat:@"insert into empInfo values('%@', '%@','%@','%@','%@','%@')", self.txtEmpCode.text, self.txtName.text, self.txtDesignation.text,self.txtDepartment.text,self.txtTagline.text,self.saveImage.image]; 
    } 

    else{ 

     query = [NSString stringWithFormat:@"update empInfo set name='%@',empInfoCode='%@',designation='%@',department='%@',tagLine='%@',photo='%@' where empInfoCode=%d", self.txtEmpCode.text,self.txtName.text, self.txtDesignation.text,self.txtTagline.text,self.txtDepartment.text,self.saveImage.image, self.recordIDToEdit]; 

    } 


    // Execute the query.-------------- 

     [self.dbManager executeQuery:query]; 

    // If the query is sucessfull the show this in the dubugger. 
    if (self.dbManager.affectedRows != 0) { 

     NSLog(@"Query was executed successfully. Affected rows = %d", self.dbManager.affectedRows); 

     // Here we inform the delegate that editing in app is finished. 

     [self.delegate editingInfoWasFinished]; 

     // Pop the view controller. 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 
    else{ 
     NSLog(@"%d",self.dbManager.affectedRows); 
     NSLog(@"---Could not execute the query.----"); 
    } 

} 

このメソッドでデータをロードすると、テキストデータにアクセスできますが、このメソッドではイメージをロードできません。

-(void)loadInfoToEdit{ 

    // Create the query. 

    NSString *query = [NSString stringWithFormat:@"select * from empInfo where empInfoCode=%d", self.recordIDToEdit]; 

    // Load the relevant data. 

    NSArray *results = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:query]]; 

    // Setting the loaded data to the textfields and imageView. 
. 
    self.txtEmpCode.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"empInfoCode"]]; 

    self.txtName.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"name"]]; 

    self.txtDesignation.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"designation"]]; 

    self.txtTagline.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"tagLine"]]; 

    self.txtDepartment.text = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"department"]]; 

self.saveImage.image = [[results objectAtIndex:0] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"photo"]]; 

    // NSLog(@"This photo has:%@",[[results objectAtIndex:0]objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"photo"]]); 

    // self.saveImage.image= [[results objectAtIndex:0]objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"photo"]]; 

// NSLog(@"This Nsdata object has %@",img); 
// self.saveImage.image = [UIImage imageWithData:img]; 

} 

どのように私はsaveImage(UIImageViewプロパティ)に私の画像を読み込むことができますか?

答えて

2

イメージをドキュメントディレクトリに保存する必要があります。そのためには、最初に画像をデータに変換してから、そのデータをdocumentdirectoryに保存(または書き込み)する必要があります。あなたが今、あなたのsqlite database

に画像の名前を保存する必要があり、あなたのデータベースからデータをフェッチするときに、あなたがimagenameのを持ってますが、そのimagenameによってあなたはdocument directoryから保存した画像データを取得することができますし、画像にそのデータを変換することができますし、要件ごとに使用することができます。

例:

保存画像、

NSString *docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]; 

NSString *profilePicturePath = [docsDir stringByAppendingPathComponent:@"profilePicture"]; 

NSData *data = UIImageJPEGRepresentation(yourImage, 1.0); 

[data writeToFile:profilePicturePath atomically:NO]; 

あなたが好きな画像を取得することができ、

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfFile:profilePicturePath]]; 
+0

おかげでたくさんの@Lion。 –

+0

あなたは大歓迎です:) ... – Lion

+0

次の画像を挿入しようとすると画像を更新できません。最後の人物に挿入された同じ画像を表示します。 –

0

文字列データを保存するだけでイメージを保存することはできません。 thisを参照してください。あなたはNSDataのに画像を変換し、より多くの情報については

sqlite3_bind_blob(statement, 2, [imgData bytes], [imgData length], SQLITE_TRANSIENT); 

を使用してそれを保存する必要があります。

+0

おかげ@vishal sonawane –

関連する問題