gpt4 book ai didi

iphone - 将 SQlite3 连接到 UITextview

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:51 25 4
gpt4 key购买 nike

我正在做一个 iPad 应用程序,如果我将在同一个屏幕上有 UITabelview 和一个 Button 和 UiTextview。我的任务是,如果我在 UITableview 中选择某行并按下按钮,文本必须出现在 UITextview 上。

我填写了一些方法,但它没有用,任何人都可以让我知道我究竟可以做些什么来成功完成这项任务。

请在下面找到我的代码供您引用...它可以帮助您解释我的问题。

#import <UIKit/UIKit.h>
#import "table1.h"
#import "textView.h"


@interface searchOne : UIViewController

{
IBOutlet UITableView *firstTable;
table1 *tableOne;
textView * text1;
int row;
}
@property(nonatomic,retain)IBOutlet UIButton * search;
@property (nonatomic,retain) IBOutlet UITextView *txt;
@property(nonatomic, assign) int row;

-(IBAction)resPage:(id)sender;
@end
#import "searchOne.h"
#import "textView.h"

@implementation searchOne
@synthesize search;
@synthesize txt, row;


- (void)viewDidLoad {
[super viewDidLoad];
if (tableOne == nil) {
tableOne = [[table1 alloc] init];
}

[firstTable setDataSource:tableOne];

tableOne.view = tableOne.tableView;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

row = [indexPath row];


}
-(IBAction)resPage:(id)sender{

NSString *str = txt.text;
row = [str intValue];
NSLog(@"get clicked");
self.view =txt;

}

/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/

- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}



- (void)viewDidUnload {
// [self setTxt:nil];
[super viewDidUnload];
}
@end

数据库:

#import <Foundation/Foundation.h>

@interface db : NSObject{
NSInteger ID;
NSString * name;
}


@property (nonatomic, retain) NSString * name;
@property(nonatomic, readwrite) NSInteger ID;



-(id)initWithID: (NSInteger)i andName:(NSString *)n;

@end
@implementation db
@synthesize name,ID;

-(id)initWithID: (NSInteger)i andName:(NSString *)n{
self=[super init];
if(self)
{
self.ID = i;
self.name = n;
}
return self;
}


@end

标签 View :

#import <UIKit/UIKit.h>
#import "sqlite3.h"
#import "db.h"

@interface table1 : UITableViewController<UITableViewDataSource>{
NSString *databaseName;
NSString * databasePath;
NSMutableArray * tableOne;

}
@property(nonatomic, retain) NSMutableArray * tableOne;


-(void)checkAndCreateDatabase;
-(void)readDataFromDatabase;


@end

#import "table1.h"
#import "db.h"

@implementation table1
@synthesize tableTwo;

#pragma mark - View lifecycle
- (void)viewDidLoad
{

databaseName=@"nobel10.db";

NSArray *documentPaths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentDir = [documentPaths objectAtIndex:0];
databasePath=[documentDir stringByAppendingPathComponent:databaseName];
[self checkAndCreateDatabase];
[self readDataFromDatabase];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}


#pragma mark - TableView Data Source methods
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [tableTwo count]; }

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell= nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"mycell"];
if (cell == nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"mycell"];}

db * temp =(db *)[self.tableTwo objectAtIndex:indexPath.row];
cell.textLabel.text=temp.name;
return cell;
}


-(void)checkAndCreateDatabase{
BOOL success;
NSFileManager *fileManager=[NSFileManager defaultManager];
success=[fileManager fileExistsAtPath:databasePath];
if(success)
return;

NSString *databasePathFromApp = [[[NSBundle mainBundle]resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}
-(void)readDataFromDatabase{
sqlite3 *database;
tableTwo=[[NSMutableArray alloc]init];
if(sqlite3_open([databasePath UTF8String], &database)== SQLITE_OK){
const char *sqlStatement = "SELECT * FROM country";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL)==SQLITE_OK){
while (sqlite3_step(compiledStatement)==SQLITE_ROW) {
NSInteger pId = sqlite3_column_int(compiledStatement, 0);
NSString *stringName=[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
db *info =[[db alloc]initWithID:pId andName:stringName];
[tableTwo addObject:info];

}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}



@end

UITextView:

#import <UIKit/UIKit.h>
#import "sqlite3.h"
#import "db.h"

@interface textView : UIViewController<UITextViewDelegate>{
NSString *databaseName;
NSString * databasePath;
NSMutableArray *textOne;
NSString *description;
}
@property(nonatomic, retain) NSMutableArray *textOne;
@property (nonatomic, retain) NSString *description;
-(void)checkAndCreateDatabase;
-(void)readDataFromDatabase;
-(id)initWithDescription:(NSString *)d;
@end

#import "textView.h"

@implementation textView
@synthesize textOne, description;;
#pragma mark - View lifecycle
- (void)viewDidLoad
{

databaseName=@"nobel10.db";

NSArray *documentPaths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentDir = [documentPaths objectAtIndex:0];
databasePath=[documentDir stringByAppendingPathComponent:databaseName];
[self checkAndCreateDatabase];
[self readDataFromDatabase];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}


#pragma mark - TableView Data Source methods


// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)


-(void)checkAndCreateDatabase{
BOOL success;
NSFileManager *fileManager=[NSFileManager defaultManager];
success=[fileManager fileExistsAtPath:databasePath];
if(success)
return;

NSString *databasePathFromApp = [[[NSBundle mainBundle]resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}
-(void)readDataFromDatabase{
sqlite3 *database;
textOne=[[NSMutableArray alloc]init];
if(sqlite3_open([databasePath UTF8String], &database)== SQLITE_OK){
const char *sqlStatement = "SELECT name,item_country.id,text.item FROM country,item_country,text WHERE country.name ='India' AND country.id = item_country.id AND text.item =item_country.item ";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL)==SQLITE_OK){
while (sqlite3_step(compiledStatement)==SQLITE_ROW) {
NSInteger pId = sqlite3_column_int(compiledStatement, 0);
NSString *stringName=[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
db *info =[[db alloc]initWithID:pId andName:stringName];
[textOne addObject:info];

}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}
-(id)initWithDescription:(NSString *)d{
self.description = d;
return self;
}

@end

请帮助我,我是 iPad 开发的新手,在这里遇到了......

最佳答案

一种快速而肮脏的方法是删除 UITextView,然后在您选择该行时将其添加回去。看看是否可行。

关于iphone - 将 SQlite3 连接到 UITextview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9499488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com