タブバーを使用してデータを転送するための標準パターンは何ですか?
1 に答える
2
コンピューターにローカルサーバーをセットアップします(最終的には、これがWebサイトなどでホストされるものになります...)これを行うには、次のことをお勧めします。
XAMPP(http://www.apachefriends.org/en/xampp-macosx.html)をダウンロードし、指示に従います
アプリケーションにインストールする
アプリケーションのXAMPPフォルダーにあるhtcdocsをすべての読み取りと書き込みで作成する
- Tutorials(htcdocs内)という名前の新しいフォルダーを作成します
- index.phpという名前の新しいphpファイルを追加します
- PHPコードを記述します(これは安全ではなく、非常に基本的な例にすぎないことに注意してください)
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ファイルを保存して閉じます
- Xcodeで新しいプロジェクトを作成し、画面に結果を表示するテキストラベルを設定します(これを行う方法がわからない場合は、非常に簡単なgoogleチュートリアル)
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
于 2013-03-25T23:48:06.017 に答える