tabbar委托的标准模式是什么

时间:2013-03-25 23:42:53

标签: php iphone ios nsurlconnection nsmutabledata

使用标签栏传输数据的标准模式是什么?

1 个答案:

答案 0 :(得分:2)

  1. 在您的计算机上设置本地服务器(最终这将是在网站上托管的内容等)。为此,我建议如下:

  2. 下载XAMPP(http://www.apachefriends.org/en/xampp-macosx.html)按照说明

    • 在应用程序中安装

    • 在应用程序的XAMPP文件夹中创建htcdocs并为所有人编写

    • 创建一个名为Tutorials(在htcdocs中)的新文件夹
    • 添加一个名为index.php的新php文件
    • 编写php代码(注意这不是安全的,只是一个非常基本的例子)
  3. index.php中的

    写道: //非常不安全,但这会找到函数参数名称

    if(function_exists($_GET['f'])) {
        //If found, call the function with value as a parameter
       $_GET['f']($_GET['value']);
    }
    //actual function that takes in a number and finds the square of the number
    function getLabel($number){
        //This variable response with parameter name is equal to the number times the number    
        $response['name']=$number*$number;
        //Return the data to the caller (in JSON encoded format)
        echo json_encode($response);
    }
    

    - 保存并关闭index.php文件

    1. 在Xcode中创建一个新项目,使用文本标签设置它将在屏幕上显示结果(如果您不知道如何执行此操作,那么非常简单的google教程)
    2. 在Xcode中设置连接

      详细信息和步骤在.h和.m文件中说明 (抱歉不确定为什么这里的代码部分没有这样显示)

      //Step 1, add NSURLConnectionDataDelegate
          //.h
      @interface ViewController : UIViewController<NSURLConnectionDataDelegate>
      @property (strong, nonatomic) IBOutlet UILabel *answer;
      @end
      

      的.m

      #import "ViewController.h"
      
      @interface ViewController ()
      {//step 2 local data objects
          NSMutableData*webData;
          NSURLConnection*connection;
      
      }
      @end
      
      @implementation ViewController
      
      - (void)viewDidLoad
      {
          [super viewDidLoad];
      
          //Step 8 call (send) the request
          [self getData];
          // Do any additional setup after loading the view, typically from a nib.
      
      
          //NSDictionary*dict=[NSJSONSerialization se]
      }
      //Step 3 implement this method 
      -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
          [webData setLength:0];
      }
      
      //Step 4 append the connection data to your object
      -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
          [webData appendData:data];
      }
      
      //Step 5 Process results from request (called automatically when the data arrives)
      -(void)connectionDidFinishLoading:(NSURLConnection *)connection{
          //Main parse
      
          //Web data
      
          NSError*error;
      
          //Dictionary serialized (processed) using JSON (Way of encoding data from a web request)
          NSDictionary*data=[NSJSONSerialization JSONObjectWithData:webData options:0 error:&error];
      
          //If data is nil, then print error
          if (data==nil) {
              NSLog(@"%@",error);
          }
      
          //Print the data
          NSLog(@"%@",data);
      
          //Get the numerical result from the dictionary key name
          NSNumber*num=[data valueForKey:@"name"];
      
          //Convert number to string
          NSString*label=[num stringValue];
      
          //Set the label to this result
          _answer.text=label;
      
      }
      //Step 7, actually initialize the request
      -(void)getData{
          //I will break this down as if it where a generic method
          //Connect to the index.php file via this URL
      
      
          //Localhost/tutorials is the XAMPP folder on your computer
      
          //index.php is the php file
      
          //getLabel(int number){}
          //?f=getLabel (calling this method in the php file)
      
          //number=900
          //&value=900 is the parameter
          NSURL*url=[NSURL URLWithString:@"http://localhost/tutorials/index.php?f=getLabel&value=900"];
      
          //In the php file it does number*number and returns the results
      
          //URL request
          NSURLRequest*request=[NSURLRequest requestWithURL:url];
      
          //Set the connection
          connection = [NSURLConnection connectionWithRequest:request delegate:self];
      
          if (connection) {
              webData=[[NSMutableData alloc]init];
          }
      
          //*****Results of this request are processed by step 5
      
      }//Step 6, in case data connection fails
      -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
          NSLog(@"fail");
      
      }
      - (void)didReceiveMemoryWarning
      {
          [super didReceiveMemoryWarning];
          // Dispose of any resources that can be recreated.
      }
      
      @end