我试图在数据库中过滤搜索结果。
我的iOS应用程序中实现了条形码扫描程序。现在,当我扫描时,它会扫描条形码并发出警报。按钮索引1导致此NSData调用:
NSString *salesStr = @"http://10.0.0.1:";
salesStr = [salesStr stringByAppendingString:@"8080"];
salesStr = [salesStr stringByAppendingString:@"/barcode.php?password="];
salesStr = [salesStr stringByAppendingString:@"test"];
salesStr = [salesStr stringByAppendingString:@"&db="];
salesStr = [salesStr stringByAppendingString:@"testDB"];
salesStr = [salesStr stringByAppendingString:@"&barNum="];
salesStr = [salesStr stringByAppendingString:self.scannedItem];
NSURL * url = [NSURL URLWithString:salesStr];
NSData * data = [NSData dataWithContentsOfURL:url];
10.0.0.1:8080/barcode.php?password=test&db=testDB&barNum=0123456789012
所以我要做的是:如果扫描的项目不在数据库中,那么数据库将使用标识符 scanMissing ;当然,如果扫描的项目在数据库中,那么它使用 scanSuccess 。
if(data == nil)
{
[self performSegueWithIdentifier:@"scanMissing" sender:self];
}
else
{
[self performSegueWithIdentifier:@"scanSuccess" sender:self];
}
}
我的问题是我无法使用nil,因为有些字节仍在传输。当我设置断点时,我会获得数据
的以下信息数据(_NSInlineData)2个字节
我是否必须将if语句更改为2个字节才能使其正常工作?或者我该怎么办?
编辑:PHP代码:
$host = "localhost";
$db = $_REQUEST['db'];
$user = "root";
$pass = $_REQUEST['password'];
$barcode = $_REQUEST['barNum'];
$connection = mysql_connect($host, $user, $pass);
//Check to see if we can connect to the server
if(!$connection)
{
die("Database server connection failed.");
}
else
{
//Attempt to select the database
$dbconnect = mysql_select_db($db, $connection);
//Check to see if we could select the database
if(!$dbconnect)
{
die("Unable to connect to the specified database!");
}
else
{
$query = "SELECT ITEM_ID, ITEM_Kitchen_Name FROM it_titem WHERE ITEM_ID=$barcode";
$resultset = mysql_query($query, $connection);
$records = array();
//Loop through all our records and add them to our array
while($r = mysql_fetch_assoc($resultset))
{
$records[] = $r;
}
//Output the data as JSON
echo json_encode($records);
}
}
?>
答案 0 :(得分:1)
您的PHP代码输出JSON编码的数组。因此,最小的响应是[]
。无论如何,它不能是nil
。
您可以尝试将数据与[]
进行比较,也可以解码JSON并检查数组的长度。第二种选择是迄今为止最可靠的恕我直言。
NSError *error = nil;
NSArray *results = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (error != nil)
{
// There was an error parsing the JSON, do whatever you want
}
else if (results.count == 0)
{
// no results
}
else
{
// results
}
(尚未测试过)。
答案 1 :(得分:1)
恕我直言你应该用PHP处理这个问题。
如果你找到了什么
{
"Success" : true,
"Response" : {
"ID": 1234,
"Name":"Name string"
}
}
如果不是
{
"Success" : false,
"Response" : {
}
}
此外,您可以尝试使用JSONModel