您好,我想知道在服务器上处理外部数据库的最佳方法是什么,例如 apache 上的本地数据库。或者当你使用 MYSQL 时类似。我想我很困惑如何在 iOS 上进行数据库工作。
谢谢,非常感谢。
您好,我想知道在服务器上处理外部数据库的最佳方法是什么,例如 apache 上的本地数据库。或者当你使用 MYSQL 时类似。我想我很困惑如何在 iOS 上进行数据库工作。
谢谢,非常感谢。
Parse.com 在这方面提供了一些有趣的选项——你可以上传一个 csv 并用它创建一个关系数据库,然后通过他们的 SDK 在你的应用程序中访问它,只需几行代码。
我不为他们工作,但绝对值得一试作为解决方案。
正如 Tom Jowett 之前指出的,如果您不确定自己真正需要什么,请从 Parse 开始。
如果您需要在本地(即在手机上)持久化数据,那么 Core Data 非常好。Core Data 不是严格意义上的 ORM,而是图形管理器,但它会为您在本地存储数据(您不必担心实际的 db)。您也可以直接使用 SQLite,但不应该这样做(除非您有充分的理由这样做)。
另一方面,如果您只是从服务器消费数据,那么看看 parse.com,如果不符合您的需求,您可以随时编写自己的 RESTful 服务器,并使用您选择的数据库.
你不能在 iOS 中直接访问 MYSQL,尽管你可以做到。Apple 不会批准您的应用程序。
所以我们使用Web Service来访问数据。这意味着您通过特定的 URL 和参数请求您的 Web 服务器。并让您的网络服务器查询您的数据库,并最终以plaintext
,XML
或JSON
格式输出。当你得到结果时,你可以parse
把它变成一个像NSDictionary
or的对象NSArray
。
我相信最常见的方法是使用ASIHTTPRequest和SBJson框架。它快速可靠。(虽然 ASIHTTPRequest 已经停止)
假设您在 apache 服务器上使用 PHP。
$mysqlArray = mysql_query($query);
$resultObjs = array();
while($mysqlObj = mysql_fetch_object($mysqlArray)){
array_push($resultObjs,$mysqlObj);
}
echo json_encode($mysqlObj);
NSURL *api = [NSURL URLWithString:@"http://YOURSERVER.com/api.php"];
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:api];
NSString *resultString = [request responseString];
[request release];
SBJson
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSArray *resultObjs = (NSArray*)[parser objectWithString:resultString];
[parser release];
这是一个基本概念,请在他们的主页上阅读更多示例,并在谷歌上搜索更多示例。希望对您有所帮助。
只需在您的服务器上使用 PHP 页面,并使用 GET 变量通过NSURLConnection
. 您可以使用 API,但此解决方案要简单得多。
如果您需要从服务器获取信息,您可以简单地执行以下操作:
NSString* returnedInfo = [NSString stringWithContentsOfURL:[NSURL urlWithString:@"http://www.myserver.com/myaccessorpage.php?a=sdf&s=dfg"]];
您也可以在后台线程上运行它以避免应用程序挂起。
这可能不是实现您正在做的事情的最有效方法,但它绝对是最简单的方法。
希望这可以帮助您入门。