- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在为我的应用程序编写一个搜索功能,代码如下:
- (void) selectObject: (NSString *)notes{
[axKnotes removeAllObjects];
[notesName removeAllObjects];
NSString *sql = [[NSString alloc] initWithFormat:@"SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%%%@%%'", notes];
//there's a problem NSLog(sql);
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(dataBase, [sql UTF8String], -1, &statement, nil) == SQLITE_OK){
while (sqlite3_step(statement) == SQLITE_ROW) {
char *ch0=(char *)sqlite3_column_text(statement, 0);
NSString *name = [[NSString alloc]initWithUTF8String:ch0];
[notesName addObject:name];
//content
char *ch1= (char*)sqlite3_column_text(statement, 1);
NSString *content = [[NSString alloc]initWithUTF8String:ch1];
[axKnotes addObject:content];
}
}
}
- (void) searchBar: (UISearchBar *)searchBar textDidChange:(NSString *)searchText{
[self selectObject:searchText];
[self.tableOfNotes reloadData];
}
%%%@%% 在另一个应用程序中完美运行,但在这里当我键入(文本更改)时,数组立即被清除并且再也不会更改。 NSLog 说: 当我输入字符串“note1”时,昨晚它根本无法识别我的字符串,并记录了各种乱码,如 $#$*#%#**(你知道的。)我希望有人能帮助我真正快速...
最佳答案
您对 %%%@%%
的使用是正确的(注意事项我稍后会谈到)。当我运行你的代码时,我看到:
2015-11-19 10:23:57.981 MyApp[78060:30221665] SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%N%'
2015-11-19 10:23:58.867 MyApp[78060:30221665] SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%No%'
2015-11-19 10:23:59.576 MyApp[78060:30221665] SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%Not%'
2015-11-19 10:24:00.160 MyApp[78060:30221665] SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%Note%'
2015-11-19 10:24:00.970 MyApp[78060:30221665] SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%Notes%'
2015-11-19 10:24:04.885 MyApp[78060:30221665] SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE '%Notes1%'
如果您真的在使用这段代码,但没有看到 %
字符出现,则一定存在一些根本性的脱节。我建议在其中放置一个断点,并确保调用的是此方法,而不是其他可能挥之不去的排列。此外,请确保您的代码未使用某些非 ASCII %
字符。
如果问题仍然存在,您可能需要从设备/模拟器中删除该应用程序,然后重试。如果不行,则找到派生数据文件夹,退出 Xcode,清空该派生数据文件夹,然后重新启动 Xcode 并重试。
但是,如果您解决了这个 %%%@%%
问题,但您仍然没有看到您的表格得到刷新,则该问题的可能来源多种多样:
tableOfNotes
为 nil
(例如, socket 未正确连接);axKnotes
和/或 notesName
为 nil
(例如 NSMutableArray
从未正确实例化);或UITableView
的数据源未正确连接。如果您修复了 SQLite 代码但仍然没有看到 TableView 更新,您应该检查这些变量/属性(使用断点或 NSLog
)并确保它们都不是 无
。
--
关于此 SQLite 代码的一些不相关的警告:
如果 sqlite3_prepare_v2
失败,我建议记录 sqlite3_errmsg
,如果没有它,错误将被忽略。
记得调用sqlite3_stmt
引用的sqlite3_finalize
。否则,代码将会泄漏。
您正在使用 initWithFormat
构建 SQL。这是一个非常糟糕的主意,因为如果用户曾经搜索过类似 O'Malley
的内容,SQL 就会失败。相反,请在 SQL 中使用 ?
占位符并从 SQL 中删除 '
字符,然后将值绑定(bind)到该 ?
占位符:
- (void) selectObject: (NSString *)notes{
[axKnotes removeAllObjects];
[notesName removeAllObjects];
const char *sql = "SELECT NOTESNAME, NOTESCONTENT, STATUS FROM axKnotes WHERE NOTESCONTENT LIKE ?";
NSString *value = [[NSString alloc] initWithFormat:@"%%%@%%", notes];
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(dataBase, sql, -1, &statement, NULL) != SQLITE_OK) {
NSLog(@"%s", sqlite3_errmsg(dataBase));
return;
}
if (sqlite3_bind_text(statement, 1, [value UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK) {
NSLog(@"%s", sqlite3_errmsg(dataBase));
}
int rc;
while ((rc = sqlite3_step(statement)) == SQLITE_ROW) {
char *ch0=(char *)sqlite3_column_text(statement, 0);
NSString *name = ch0 ? [[NSString alloc]initWithUTF8String:ch0] : @"";
[notesName addObject:name];
//content
char *ch1= (char*)sqlite3_column_text(statement, 1);
NSString *content = ch1 ? [[NSString alloc]initWithUTF8String:ch1] : @"";
[axKnotes addObject:content];
}
if (rc != SQLITE_DONE) {
NSLog(@"%s", sqlite3_errmsg(dataBase));
}
sqlite3_finalize(statement);
}
关于ios - sqlite selectObject 方法,%%%@%% 东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33810951/
我想我确实明白如果我在“设备连接”中选择“一个对象”,并且该对象是画笔、字体、,会发生什么>pen:这些对象的特征因此用于在设备上下文上绘图。 但是,我不明白在设备上下文中选择位图后会发生什么,更不用
在我的程序中,我有一个我经常绘制的内存 DC,然后响应 WM_PAINT,我快速将它 BitBlt 到屏幕上。我一直都是这样画的,内存 DC 是响应 WM_CREATE 顺便说一句而创建的。 void
所以我正在为我的应用程序编写一个搜索功能,代码如下: - (void) selectObject: (NSString *)notes{ [axKnotes removeAllObjects]
我有一些像这样管理异常安全的原始代码: void foo() { HDC hdc = //get an HDC HBITMAP hbitmap = //get an HBITMAP
您好,我正在尝试创建一个画笔,但我在使用 SelectObject 这行代码时遇到了问题: Brush_C = SelectObject(hdc_TS, hBrush); 错误是这样的: line 2
我有一个位图类,它有一个加载函数,用于从文件路径或资源 ID 加载位图。这部分工作正常。 void GtBitmap::Load() { LPTSTR szFileNa
我正在尝试从屏幕的 0x0(左上)位置获取 500x500 的屏幕截图并将其放在窗口中。 这是我的代码(hwnd 是我的窗口句柄): HDC appDc = GetDC(hwnd); HDC dc =
我正在开发多线程 win32 MFC 应用程序。我们正在渲染 map 并将其显示在用户界面的 Pane 中,并在顶部显示自定义渲染的对象。呈现速度很慢(~800 毫秒),这是在用户界面线程上发生的。
所以我试图在 Win32 中制作 Pong 的克隆,并且一切正常,但后来我做了很多物理方面的事情,当我测试它时, Sprite 位图甚至不再显示:/ 所以,这是我如何初始化渲染内容: int Init
CPaintDC dc(this); CFont font; dc.SelectObject(font); // why does this build? 函数CDC::Select
希望你有美好的一天。 Dom4j javadoc 表单 Node.selectObject(String xpathExpression) 说: ...返回的对象可以是一个或多个 Node 实例的列表
首先我会说我对编译语言一点经验都没有,这可能是显而易见的,但我已经做了几个小时的搜索并且空手而归。 我正在尝试构建 this Eclipse 中的项目。我已经构建并导入了 OpenCV 3.1,在我开
我是一名优秀的程序员,十分优秀!