3

saveInfoボタンをクリックして、画像とテキストをsqlite3データベースに保存しました。

- (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 property)にロードするにはどうすればよいですか?

4

2 に答える 2

3

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

これで、データベースからデータを取得すると、イメージ名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]];
于 2016-07-20T13:16:49.297 に答える
0

文字列データを保存するように、単純に画像を保存することはできません。画像を NSData に変換してから、次を使用して保存する必要があります

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

詳細については、こちらを参照してください。

于 2016-07-20T13:00:41.253 に答える