【问题标题】:PHP and MySQL Experts feels like a dummy in swift [closed]PHP 和 MySQL 专家在 swift 中感觉就像一个假人 [关闭]
【发布时间】:2020-05-06 12:58:00
【问题描述】:

我是一个充满激情的非专业程序员,我会说我是 php 和 MySQL 方面的专家 - 我能够用 php 编写整个 web 应用程序,具有 iOS 应用程序的外观和感觉,但是.. .. 它仍然是一个网络应用程序。

在过去的几年里,我很多时候都是从 swift 和 Xcode 开始的。但是因为它对我来说感觉很不一样,感觉就像在 Xcode 中处理代码时经常发生 Swift 变化(例如 SwiftUI),所以我每次都停下来。

我有一个非常酷的应用程序,但我对下一个 php web 应用程序项目感到厌烦,我真的很想在 iOS 中实现它。因此,我直接对数据的存储方式感到困惑。

为了使用我的技能,我可以创建一个 php API 和一个 MySQL 数据库并使用 http 请求。够公平的......

但是如果用户没有互联网连接怎么办?我想有两个数据库——一个在设备上,一个在互联网上。我已经用核心数据和 swift ui 做了一个待办事项列表教程。

有话要说:

应用启动时,应该有一个包含帐户的列表视图。每个帐户都有一个唯一 ID,用户可以在共享唯一 ID 时添加帐户。这样,多个用户就可以访问同一个数据项。一个人创建帐户和随机唯一 ID,另一个用户可以将帐户项添加到他的应用程序中。

每个帐户都有与该帐户相关的多个用户的列表,每个帐户都有一个可由每个用户创建的交易列表。

此外,我可以决定我是哪个用户。在 php 中,我会使用包含用户列表的下拉菜单,并将选择的值存储在会话中。

如果有助于理解,我添加我的数据库结构:

CREATE TABLE `pay_accounts` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `share_id` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `currency` (`currency`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `pay_transaction_users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user` int(11) unsigned DEFAULT NULL,
  `amount` float DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `user` (`user`),
  CONSTRAINT `pay_transaction_users_ibfk_1` FOREIGN KEY (`user`) REFERENCES `pay_users` (`id`) ON DELETE SET NULL ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `pay_transactions` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `date` timestamp NULL DEFAULT NULL,
  `payer` int(11) unsigned DEFAULT NULL,
  `amount` float DEFAULT NULL,
  `purpose` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `payer` (`payer`),
  CONSTRAINT `pay_transactions_ibfk_1` FOREIGN KEY (`payer`) REFERENCES     `pay_users` (`id`) ON DELETE SET NULL ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;---------------

CREATE TABLE `pay_users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `account` int(11) unsigned DEFAULT NULL,
  `mail` varchar(255) DEFAULT NULL,
  `activity` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `account` (`account`),
  CONSTRAINT `pay_users_ibfk_1` FOREIGN KEY (`account`) REFERENCES `pay_accounts` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我的直接困惑是:在 php 中,现在很容易使用 HTML 创建一个 from 并将数据添加到 MySQL...在 Swift 中,我完全不知道如何实现该项目。

【问题讨论】:

  • 您可以在 iOS 中使用 CoreData,这可能很适合您,但如果您想存储简单的东西,您可以将对象存储到磁盘并在需要时读取它们跨度>
  • 您的问题到底是什么?如何在 Swift 中创建表格视图?如何从 http 请求中进行联网和解析数据?如何维护本地数据库?如何添加文本字段或提交按钮?所有这些事情都有很好的解决方案。我建议从一个与您的应用创意类似的基本教程开始,然后再提出更具体的问题。以下是有关如何创建应用程序以在表格视图中查看和操作数据的教程:developer.apple.com/library/archive/referencelibrary/…

标签: ios swift xcode core-data


【解决方案1】:

在 php 中,现在很容易用 HTML 创建一个 from 并添加数据 到 MySQL ......在 Swift 中,我完全不知道如何实现这一点 项目。

您如何在 HTML/PHP 中实现这一点?您基本上是在 HTML 中创建一个表单,并在提交时通过POST/GET 将您的数据发送到您的后端,PHP 处理数据库连接。

您也可以对您的 iOS 应用使用相同的方法。在 iOS 中,您可以使用不同的 http 请求类型轻松地发出 HTTP 请求。检查this 线程。因此,您通常需要先进行身份验证,将您的凭据从应用程序发送到后端以验证用户。

您的后端数据可以以任何您喜欢的方式以 JSON/XML 格式发送。您可以在 Swift/Objective C 中轻松解析它,并在应用程序中创建对象并显示数据。如果您想在本地存储该数据,请执行此操作。这肯定是一个好方法(离线/缓存)。您必须决定您的应用是否也应该离线工作。两者都是可能的。

数据可以本地存储在您的数据库中/甚至可以使用 CoreData 框架,这非常容易。如果您获取新数据,请将其与现有数据合并并同时显示。

我有一张小图给你看,但你的方法已经很好了。我构建了一个“Instagram”iOS 克隆,后端使用 PHP。它工作正常。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 2013-06-04
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2013-05-04
    相关资源
    最近更新 更多