2

1 つのアプリケーションを作成し、JSON からテーブル ビューで多くのデータを読み取り、この JSON を解析して sqlite に保存したいのですが、どこから始めればよいかわかりません。

これは私のjsonコードを解析しています:

@implementation TableViewController
{
    NSArray *news;
    NSMutableData *data;
    NSString *title;
    NSMutableArray *all;
}
@synthesize mainTable;
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.title = @"News";
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    NSURL *url = [NSURL URLWithString:@"http://zacandcatie.com/YouTube/json.php"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    [con start];
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    data = [[NSMutableData alloc]init];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData
{
    [data appendData:theData];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

    news = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
    for (int i =0; i < [news count]; i++)
    {
    NSIndexPath *indexPath = [self.mainTable indexPathForSelectedRow];
    title =[[news objectAtIndex:indexPath.row+i]objectForKey:@"title"];
        if (!all) {
            all = [NSMutableArray array];
        }
        [all addObject:title];
    }
    NSLog(@"%@",all);

    [mainTable reloadData];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    UIAlertView *errorView = [[UIAlertView alloc]initWithTitle:@"Error" message:@"The Connection has been LOST" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [errorView show];
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

あなたは私のjsonのURLです。「タイトル」と「日付文字列」の値をsqliteに保存したい。私を導いてください!!!

4

5 に答える 5

1

NSDictionary の形式でデータを解析した後、挿入のクエリを作成し、クエリを起動できます。データはデータベースに保存されます。

于 2013-04-29T09:13:01.937 に答える
1
-(void)InsertRecords:(NSMutableDictionary *)dict
{

sqlite3_stmt *stmt;
sqlite3 *cruddb;

NSMutableString *str = [NSMutableString stringWithFormat:@"Insert into tblName ("];

for (int i = 0; i<[[dict allKeys] count]; i++)
{
    [str appendFormat:@"%@,",[[dict allKeys] objectAtIndex:i]];
}
[str appendFormat:@")values ("];
for (int i = 0; i<[[dict allKeys] count]; i++)
{
    [str appendFormat:@"%@,",[dict valueForKey:[[dict allKeys] objectAtIndex:i]]];
}

[str appendFormat:@");"];
NSLog(@"qry : %@",str);
const char *sql = [str UTF8String]; ;

if((sqlite3_open([database UTF8String], &cruddb)==SQLITE_OK))
{
    if (sqlite3_prepare(database, sql, -1, &stmt, NULL) ==SQLITE_OK)
    {
        sqlite3_step(stmt);
        sqlite3_finalize(stmt);
    }
    else
    {
        NSLog(@"Problem with prepare statement: %s", sqlite3_errmsg(database));
    }
    sqlite3_close(database);
}
else
{
    NSLog(@"An error has occured: %s",sqlite3_errmsg(database));
}
}

これを試して。

于 2013-04-29T09:53:12.297 に答える
0

次のようなことができます:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //  tableview cell setup

    NSArray* keys = [self.data allKeys];

    cell.textLabel.text = [self.data objectForKey:[keys objectAtIndex:indexPath.row]];

    return cell;
}

このリンクを参照して、辞書にデータを並べてください

順序付けられたキーを持つ NSDictionary

于 2013-04-29T08:59:25.933 に答える
0

引き続き @Divz アン...

.sqlite ファイルを作成する必要があります。そして、これほど簡単なことはありません。

sqliteファイルを作成するには(私が知っている)2つの方法があります。

1> Firefox でSQLite Managerアドオンをダウンロードすると、データベース内のデータをグラフィカルに操作できます。

または、

2>単一行コマンドsqlite3 dbFileName.sqliteでターミナルを使用できます。入力、

sqlite>を取得する場所では、さらに SQL(create/insert/update..) クエリを開始します。

sqlite ファイルは、MacHD>users>admin (共有されていないもの)>yourFile.sqlite または finder---go>home>yourFile.sqlite で見つけることができます。

于 2013-05-17T10:36:58.680 に答える