我创建了一个网站(php)并连接到数据库,因此它可以拥有用户和发布材料。想象它就像一个论坛。现在,我将如何制作连接到同一数据库的iPhone应用程序。我已经在教自己c ++来制作应用程序了,但我不确定如何将它连接到数据库。
答案 0 :(得分:2)
要执行基于Web的数据库,最佳做法是使用对PHP脚本的HTTP请求。这样您就不必从应用程序建立数据库连接,从实际项目中排除用户名和密码。创建一些PHP脚本,通过发送POST和GET变量来完成所需的操作。
***根据我的经验和偏好
答案 1 :(得分:1)
您需要为所有可能的操作构建API端点。
发布/查看帖子/编辑帖子/添加
使用的流行且文档齐全的体系结构将是REST http://en.wikipedia.org/wiki/Representational_state_transfer
如果您使用的是PHP框架,通常会有用于创建API的辅助库
本教程应该可以帮助您理解它 http://net.tutsplus.com/tutorials/php/creating-an-api-centric-web-application/
答案 2 :(得分:1)
您只需设置RESTful webservice,然后通过Restkit在Obj-C上访问它。
编辑:顺便说一句,如果你没有花哨的应用程序需求,只需要make your website responsive,你就可以了。
答案 3 :(得分:0)
我是iphone开发的新手,已经在Iphone工作了一个月左右。想对此提出一些建议:
1)首先阅读Objective-C,因为你正在制作一个Iphone应用程序以及Xcode如何运作
2)接下来连接到Web API,您可以使用AFNetworking。这是一个Tutorial开始。您需要知道获取数据的API是什么。
3)接下来,您需要根据API中的JSON或XML数据来解析数据。这将允许您获取数据。
4)您现在可以使用UI
在Xcode中显示答案 4 :(得分:0)
您的应用可以通过向服务器上的URL发出HTTP请求来连接到您的服务。您可以使用您喜欢的任何后端,我个人使用PHP与MySQL,因为几乎所有托管服务都将支持这些工具。您可以通过定义执行功能的URL来形成查询。通常,您希望在更改服务器上的数据时使用POST请求,并在进行只读信息请求时使用GET请求。
您必须小心设计您的URL和服务器以防止未经授权的访问,我不会在此描述详细信息,但网络上有很多关于此的建议。我将重点介绍如何使用网址连接到您的服务。
我建议使用有助于发送请求和接收响应的库。回来(大约一年前),当我积极研究这样做的应用程序时,我使用了免费提供的AsiHTTPRequest库,但我现在看到作者已停止对它的支持。我的0.02美元:它适用于我的应用:http://allseeing-i.com/ASIHTTPRequest/
有两部分:1)发送请求,2)接收和处理响应。您通常希望确保异步发出请求,以便在请求通过Internet时,您的应用程序不会冻结,服务器会处理请求,并且您会收到响应。
为了便于解析结果,请让您的Web应用后端以Apple plist格式发送响应。或者你可以使用XML,但我喜欢plist,因为对它的支持已经融入了SDK。
以下是我的应用中执行此操作的代码:
// this allows you to switch between the "live" web service and a local development copy
#ifndef _USE_LOCAL_SERVER_
#define kAppCustomerInfoURL @"https://mysite.com/path/to_my/service/"
#else
#define kAppCustomerInfoURL @"http://localhost/path/to_my/service/"
#endif
NSURL *url = [NSURL URLWithString:kAppCustomerInfoURL];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
// udm is my singleton that holds properties for the current user
[request setPostValue:[udm getProperty:kNameProperty] forKey:@"name"];
[request setPostValue:[udm getProperty:kPhoneProperty] forKey:@"phone"];
[request setPostValue:[udm getProperty:kEmailProperty] forKey:@"email"];
[request setPostValue:[udm getProperty:kCityProperty] forKey:@"city"];
[request setPostValue:[udm getProperty:kAddressProperty] forKey:@"address"];
[request setPostValue:[udm getProperty:kDeliveryNotesProperty] forKey:@"comments"];
[request setPostValue:[NSString stringWithFormat:@"%u", arc4random()] forKey:@"random"];
[request setValidatesSecureCertificate:NO];
[request setDelegate:self];
[request startAsynchronous];
您的对象需要实现requestFinished:和requestFailed:methods:
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSString *response = [request responseString];
NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat format;
NSString *errorStr;
NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData
mutabilityOption:NSPropertyListImmutable
format:&format
errorDescription:&errorStr];
if ( ! plist )
{
// NSLog( @"Error: %@", errorStr );
[errorStr release];
return;
}
for ( NSString *key in [plist allKeys] )
{
if ( [key isEqualToString:@"result"] )
{
NSString *resultStr = [plist objectForKey:@"result"];
if ( ! [resultStr isEqualToString:@"ok"] )
{
// set an error
}
}
// more cases
}
}
这是我的响应失败方法,它设置一些应用程序状态并发送请求已完成的通知,应用程序的其他部分可能会在请求完成时用于更新自己:
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
NSLog( @"update customer info failed: %@", [error localizedDescription] );
self.syncDataToServerOK = NO;
[[NSNotificationCenter defaultCenter] postNotificationName:kUserDataSyncFinishedNotification object:nil];
}