【发布时间】: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/…