2009-11-30 130 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将是免费的。

还要小心,多线程的世界会变得漫长而崎岖。祝你好运