Ios 什么是%s和%d?

Ios 什么是%s和%d?,ios,sqlite,Ios,Sqlite,我正在努力学习iOs编程。我想这是一个有点相反的问题 我刚刚在youtube上完成了一个教程,使用Xcode创建了一个简单的iPhone应用程序,它允许您存储、列出和删除SQLite3数据库中的数据(因为我想要制作的应用程序需要一个数据库) 然而,上传视频的那个家伙似乎没有解释他为什么这么做,所以我现在试图理解每一段代码的作用 (我来自PHP和SQL web编程背景,因此我了解访问数据库、调用数据行等在网站上显示内容。) 我不太了解这个iOs位的一部分是使用的%s和%d值,因为它们似乎没有在任何

我正在努力学习iOs编程。我想这是一个有点相反的问题

我刚刚在youtube上完成了一个教程,使用Xcode创建了一个简单的iPhone应用程序,它允许您存储、列出和删除SQLite3数据库中的数据(因为我想要制作的应用程序需要一个数据库)

然而,上传视频的那个家伙似乎没有解释他为什么这么做,所以我现在试图理解每一段代码的作用 (我来自PHP和SQL web编程背景,因此我了解访问数据库、调用数据行等在网站上显示内容。)

我不太了解这个iOs位的一部分是使用的%s和%d值,因为它们似乎没有在任何地方声明

代码是

if(sqlite3_open([dbPathString UTF8String], &personDB)==SQLITE_OK) {
        NSString *inserStmt = [NSString stringWithFormat:@"INSERT INTO PERSONS(NAME,AGE) values ('%s', '%d')",[self.nameField.text UTF8String],[self.ageField.text intValue]];
现在%s和%d显然是从self.name字段和self.ageField中获取它们的值。然而,这意味着我只能在一个表中提交两个值?或者其他值是否有其他百分比,但肯定有一个最大值26

如蒙解释,我将不胜感激

另外,有没有人对学习为iOS编写代码的其他方法有什么建议?特别是如果您是一名初学者,只是第一次学习iOS编程,但之前的C编程技能有限。 我正在寻找的领域是创建一个应用程序,该应用程序将存储一些文本字段和图像,这些文本字段和图像将存储在数据库中,图像将存储在数据库中或作为链接并适当命名。 我希望能够操纵图像以调整其大小,以便对iPhone显示进行优化(应用程序中不需要高清图像)
稍后,我想知道如何将本地数据库(sqlite3)文件上载到在线存储(我自己的服务器或dropbox),或者将其同步到SQL数据库(从最初的外观来看,仅导出文件会更好,将图像嵌入到字段会更好,尽管我知道这不是正常的做法)

看看类参考:

以下是字符串格式说明符:

如您所见,
%d
输出一个整数,而
%s
输出一个字符串。

第一部分:

%约定“字符串格式说明符”是字符串替换的常用标准

它们不是变量,而是类型化的替换占位符

%s --> string
%d --> number
第2部分: 您可以查看iTunes U课程:

iPhone应用程序编程'11 简·博切斯教授

%s 以Null结尾的8位无符号字符数组。由于%s说明符导致在系统默认编码中解释字符,因此结果可能是可变的,特别是对于从右到左的语言。例如,对于RTL,%s在字符方向性不强时插入方向标记。因此,最好避免%s并显式指定编码

%d,%d
有符号32位整数(int).

%s
%d
分别是以null结尾的字符数组和带符号的32位整数的格式说明符。您可以在中找到有关说明符的详细信息。但是,对于SQLite语句,您不应该以这种方式格式化字符串,因为这会使您面临SQL注入的风险。您应该使用
和相应的
sqlite3\u bind*
函数。根据您的情况,您可以将
sqlite3\u bind\u text
用于
NAME
sqlite3\u bind\u int
用于
AGE

这就是所谓的格式化字符串,基本上,它是一种将值注入字符串的方法。使用%符号后的字符d表示应将值格式化为的数据类型。在您的情况下,%s用于表示字符串值,%d用于表示十进制整数值


这种类型的字符串格式非常常见;许多编程语言提供了执行这种类型的字符串格式的机制,并且格式符号在很大程度上是标准化的。您可以找到更多信息。

%s
%d
不是变量,但如何处理输入以正确格式化它们。s从文档开始,让你的问题保持简单-避免写“多部分”问题。这篇文章漫谈了太多东西。顺便说一句,永远不要使用字符串格式创建查询。使用?作为变量,然后使用
sqlite3\u bind\u xxx
函数填充值。您发布的INSERT语句是错误的,因为数字没有引号。