xcode ios将nsarray对象拆分为两个独立的对象

时间:2013-04-17 22:07:02

标签: php mysql ios xcode

我正在制作用户可以搜索其他用户的mysql数据库,在搜索时我希望它返回用户“id”和“name”,因为可能有同名的用户,所以我包含id。这是我的.php

编辑:因为我没有得到我想要的答案,我认为我没有说清楚,现在我正在考虑用另一种方式来尝试。假设 ID 将在索引0和 NAME 中 在索引1中,依此类推..请参阅我的php编辑评论。

   $result = mysql_query("SELECT `id`,`name` FROM `user` WHERE `name` LIKE '$search%'");


    mysql_close($con);

    $numrows = mysql_num_rows($result);

    if ($numrows!=0){
     while ($row = mysql_fetch_assoc ($result)){

  $id = $row['id'];

  $name = $row['name'];

            echo ("$id,$name///");

上面是我的第一次尝试,注意:编辑是一个例子,我在想的是make id,并且名称分开,然后在Xcode中将它们再分成两个不同的数组让我们说,所有ID都将在ID数组中每次“跳过名字”时跳过一个索引,名字数组中的NAMES再次跳过id。

    // EDIT: echo "%id///";
    // EDIT: echo "%name///";


  }

 }else{
   echo "fail";   
 }

然后在Xcode中

     - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
   {
   if ([searchUsers.text length] != 0) {

   NSString *FindURL = [NSString stringWithFormat:@"http://localhost/search.php?search=%@",searchUsers.text];
    // to execute php code
    NSData  *URLData = [NSData dataWithContentsOfURL:[NSURL URLWithString:FindURL]];

    // to receive the returend value

    NSString *DataResult = [[NSString alloc] initWithData:URLData encoding:NSUTF8StringEncoding];


    NSArray *FriendsArray = [DataResult componentsSeparatedByString:@"///"];



    userlist = [[NSMutableArray alloc] initWithArray:FriendsArray];
    //[self searchDidSearch];
    [self.tableView reloadData];
   }

   }

结果如“1,somename”“2,somename”等。我想要的是分割对象,以便 NAME 将在tableviewcell标题中,并在tableviewcell字幕中 ID ,我想为每一行应用它。

是否有更简单的方法,或者我做错了什么?

2 个答案:

答案 0 :(得分:2)

您可以尝试使PHP输出更像NSDictionary 例如:

{      
  {
     "id" = 1;
     "name" = name1;
  },
   {
      "id" = 1;
      "name" = name2;
   },
}

然后您可以像这样访问“name”的值(通过使用fast enumeration创建名称数组):

    NSMutableArray *namesArray = [[NSMutableArray alloc]init];
      for(NSDictionary *dict in dataArray) //dataArray NSArray of data from PHP output
      { 
          [result addObject:[dict objectForKey:@"name"]];
      }

以及之后显示tableViewCell字幕中的名称,并带有以下代码(在cellForRowAtIndexPath方法中):

cell.textLabel.text = [NSString stringWithFormat:@"%@",[result objectAtIndex:indexpathRow]];

这不是最好的方法,但我认为将来更容易使用这样的数组。快乐的编码! :)

答案 1 :(得分:1)

你没有做错任何事,我想你还有一步要走。 循环遍历所有结果并将字符串拆分为:

NSString * tempItem = [FriendsArray objectAtIndex:i]; //where i is each index, possibly in a loop
NSArray * splitObject = [tempItem componentsSeparatedByString:@","];

现在,splitObject的第一个对象是id,第二个对象是名称。您可以将其转换为循环并获得所需内容。传递这些数据有很多不同的方法,我会把它留给你。

相关问题