2009-11-30 78 views
1

我有信息,我打算通過PHP腳本在iPhone應用程序和桌面應用程序之間進行同步;有沒有一種方法在後臺調用腳本將數據發送到在線數據庫,然後從腳本中檢索數據?將數據發送到Cocoa背景中的PHP腳本

+0

您是否要求在後臺運行iPhone應用程序或在後臺運行PHP腳本? – 2009-11-30 11:24:00

+0

Cocoa/iPhone應用程序背景中的PHP腳本。例如:用戶填寫表單,提交表單,並將提交的數據發佈到PHP腳本。然後,腳本將確認發送回數據已提交的應用程序。所有的PHP對用戶都是不可見的。 – Kaji 2009-11-30 11:50:49

回答

1

這些人都是相反的**洞。如果你不喜歡他的問題,請關閉。我討厭這裏所有的那些知道所有這些人,他們根本不在意你在問什麼......他們只是試圖勸阻你,不要去想你所想的那些愚蠢的事情,而且你應該這樣做相反......呃,爲什麼?因爲你不知道它是如何做到的?長話短說,有HUDREDS的方法來做到這一點...這是我寫/喜歡的一個......但正如我所說,這個問題有點混淆的唯一原因是因爲有太多的方法來做到這一點...

#import "NSData+Base64.h" //i'm sending an image, so i base64 encode it. 

- (NSArray *)makeObjectFromJSONviaPHPwithThis:(NSData *)data 
{ 
    NSTask *phpTask = [NSTask new]; 
    [php setStandardOutput:pipe]; [php setLaunchPath:@"/usr/bin/php"]; 
    [php setArguments:[NSArray arrayWithObjects: 
     @"-f", //runs your bundled script via cli 
     [[[NSBundle mainBundle] resourcePath] 
      stringByAppendingPathComponent:@"bundledScript.php"], 
     [data base64EncodedString], nil]]; 
    NSPipe *pipe = [NSPipe new]; 
    NSFileHandle *handle = [pipe fileHandleForReading]; 
    [php launch]; 
    NSString *results = [[NSString alloc] initWithData: 
     [handle readDataToEndOfFile] encoding:NSASCIIStringEncoding]; 
    //"results" has your response from php….. I sent them back as * seperated string. 
    //Now i split the strings and shove them into an array! 
    return NSArray *parsedResults = [results componentsSeparatedByString:@"*"]; 

}

1

你可以只讓一個web app,而不是本機應用程序

+0

我想這是一種可能性,但我也在嘗試提交可以提交給iTunes商店的東西;那仍然是Web應用程序路線的一個選擇,或者Cocoa對此是必不可少的? – Kaji 2009-11-30 14:52:32

+0

Cocoa是一個不可以,但如果你想在蘋果網站上的Web應用程序,我認爲它仍然通過提交過程。 – 2009-11-30 15:02:28

0

如果將所有函數都包裝在一個漂亮的小類中,則可以使用SDK中的方法在單獨的線程中調用方法。 該方法被稱爲 detachNewThreadSelector:toTarget:withObject:

注意,如果你不想做返回的數據進行任何處理,不是你可以忽略這一點,只需使用標準方法URL負載,因爲它是異步的,並使得無論如何,在後臺連接,但不同的是,它的回調是在主線程(AFAIK)上調用的。通過在單獨的線程中執行,一切都將在那裏完成,所以UI將是免費的。

還要小心,多線程的世界會變得漫長而崎嶇。祝你好運