the*_*ott 0 iphone objective-c nslog nsstring
嘿所有,在Objective-C/iPhone开发方面,我总是一个菜鸟.
我正试图从SQLite DB中提取文本.我有一个看起来像这样的while循环:
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
Run Code Online (Sandbox Code Playgroud)
在该循环中,这打印到日志就好了:
NSLog(@"Text: %s",sqlite3_column_text(selectstmt, 1));
Run Code Online (Sandbox Code Playgroud)
这不起作用:
Category *categoryObj = [[Category alloc] initWithPrimaryKey:primaryKey];
categoryObj.categoryName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
NSLog(@"cat name: %s",categoryObj.categoryName);
Run Code Online (Sandbox Code Playgroud)
当我运行上面的内容并查看日志时,我看到:
cat name: ‡}00å
Run Code Online (Sandbox Code Playgroud)
我试着把这个字段写成一个标签,认为它可能是NSLog特有的东西,但没有任何东西出现在那里.很显然,我错过了一些基本的东西,但我不知道它是什么.
Jim*_*uls 12
记录你的字符串%@而不是%s你会没事的.NSStrings不是指向字符的指针,它们是完整的对象,因此您需要在日志格式字符串中使用"object"占位符.
这样做的另一个好处是可以使用非ASCII字符串和所有其他重要的东西来做正确的事情NSString.
请注意,如果您刚刚直接从SQLite记录结果而不是NSString使用它创建结果,那么您的%s结果是正确的.
记住:%s用于C字符串,%@用于Objective-C对象.
| 归档时间: |
|
| 查看次数: |
5147 次 |
| 最近记录: |