0

Contactと同じようにiOSアプリの開発を始めました。名前、誕生日、グループ(学校、職場)、BloodType、画像などが含まれます。

その中で、他のデータは入力することで挿入できます。ただし、画像は写真の撮影、Facebookからのダウンロードなどから取得できます。

xcodeに画像を入力することはできません。Bcoz、別の画像が何度も来る可能性があります。

どうすればいいですか?アドバイスしてください。

4

2 に答える 2

1

リンクされたFrameWorkとLilbrariesにlibSqlite3.dylibを追加し、.hファイルでデータベース変数を宣言するだけです。

   //Database Variables
   @property (strong, nonatomic) NSString *databasePath;
   @property (nonatomic)sqlite3 *contactDB;

UIImageViewとその名前をドラッグアンドドロップします...私はimgViewとして宣言しました。

そのコードをコピーして貼り付けるだけの.mファイルに移動します

- (void)viewDidLoad
 {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.


NSString *docsDir;
NSArray *dirPaths;

// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = dirPaths[0];

// Build the path to the database file
_databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"images.db"]];
//docsDir   NSPathStore2 *  @"/Users/gayathiridevi/Library/Application Support/iPhone Simulator/7.0.3/Applications/B5D4D2AF-C613-45F1-B414-829F38344C2A/Documents"  0x0895e160
NSFileManager *filemgr = [NSFileManager defaultManager];

if ([filemgr fileExistsAtPath: _databasePath ] == NO)
{
    const char *dbpath = [_databasePath UTF8String];

    if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK)
    {
        char *errMsg;
        const char *sql_stmt = "CREATE TABLE IF NOT EXISTS IMAGETB (ID INTEGER PRIMARY KEY AUTOINCREMENT,URL TEXT UNIQUE, IMAGE BLOB)";

        if (sqlite3_exec(_contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
        {

            NSLog( @"User table Not Created Error: %s", errMsg);
        }
        else
        {
            NSLog( @"User table Created: ");
        }
        sqlite3_close(_contactDB);
    }

    else {

        NSLog( @"DB Not Created");
    }
 }
 [self saveImage];
 [self showImage];   
 }

- (void)saveImage
{

sqlite3_stmt    *statement;
const char *dbpath = [_databasePath UTF8String];

if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK)
{

    NSString *insertSQL=@"INSERT INTO IMAGETB(image) VALUES(?)";

    if(sqlite3_prepare_v2(_contactDB, [insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL)== SQLITE_OK)
    {

        UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://lh6.googleusercontent.com/-vJBBGUtpXxk/AAAAAAAAAAI/AAAAAAAAADQ/nfgVPX1n-Q8/photo.jpg"]]];
        NSData *imageData=UIImagePNGRepresentation(image);
        //sqlite3_bind_text(statement, 1, [@"" UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_blob(statement, 1, [imageData bytes], [imageData length], SQLITE_TRANSIENT);
        NSLog(@"Length : %lu", (unsigned long)[imageData length]);

    }


    if (sqlite3_step(statement) == SQLITE_DONE)
    {
        NSLog( @"Insert into row id %lld",(sqlite3_last_insert_rowid(_contactDB)));
    }
    else {

        NSLog( @"Error IN INSERT" );
    }
    sqlite3_finalize(statement);
    sqlite3_close(_contactDB);
  }  
 }

- (void)showImage
{

sqlite3_stmt    *statement;
const char *dbpath = [_databasePath UTF8String];
int i = 1;
if(sqlite3_open(dbpath,&_contactDB)==SQLITE_OK)

{
    NSString *insertSQL = [NSString stringWithFormat:@"Select IMAGE FROM IMAGETB WHERE ID = %d",i];
    if(sqlite3_prepare_v2(_contactDB,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK) {
        while(sqlite3_step(statement) == SQLITE_ROW) {

            int length = sqlite3_column_bytes(statement, 0);
            NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(statement, 0) length:length];

            NSLog(@"Length : %lu", (unsigned long)[imageData length]);

            if(imageData == nil)
                NSLog(@"No image found.");
            else
                _imgView.image = [UIImage imageWithData:imageData];
            NSLog(@"image found.");
        }
    }
    sqlite3_finalize(statement);
}
sqlite3_close(_contactDB);
}

その私のコード。-(void)showImage関数でそのi値を変更することにより、詳細を取得するために戻るボタンと進むボタンを修正します

于 2014-09-11T08:38:15.983 に答える
0

写真の撮影やライブラリからの取得については、UIImagePickerControllerクラスリファレンスおよびiOS用のカメラプログラミングトピックを参照してください。Facebookから写真を取得するには、APIを参照する必要があります。これは、まったく別の魚のやかんです。

于 2012-12-31T20:08:20.240 に答える