本地保存数据(IOS)
Posted
技术标签:
【中文标题】本地保存数据(IOS)【英文标题】:Saving data locally (IOS) 【发布时间】:2020-08-11 08:55:27 【问题描述】:如何存储添加到 tableView 中的数据,在应用关闭并再次加载后我可以访问和删除这些数据?
我的应用程序基本上有一个联系人部分,您可以在应用程序中添加新联系人,有点像 Instagram 关注的离线版本。我希望用户能够在他们的设备上建立新联系人并将新联系人保存到他们的设备上,以便他们和应用可以随时访问此信息。
我想知道如何在将表格项添加到表格后保存数据我知道如何将数据添加到下面的 tableView 中。
如何将数据添加到我的 tableView:
@IBAction func done(segue:UIStoryboardSegue)
let newContact = segue.source as! NewContactViewController
FirstName = newContact.firstName
LastName = newContact.lastName
print("Adding the name: " + FirstName + " " + LastName + " to the nameArry")
nameArry.append(FirstName + " " + LastName)
print("Added " + nameArry[nameArry.count - 1] + " to name array")
contacts.append(Contacts(MyContact: nameArry[nameArry.count - 1], Me: ""))
let indexPath = IndexPath(row: myContact.count + contacts.count - 1, section: 0)
tableView.beginUpdates()
tableView.insertRows(at: [indexPath], with: .automatic)
tableView.endUpdates()
newContact.firstName = ""
newContact.lastName = ""
view.endEditing(true)
我如何加载我的表格视图:
extension ContactsViewController: UITableViewDataSource, UITableViewDelegate
// Get Number of items in table
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return (myContact.count + contacts.count)
// Set custom hights for the diffrent rows
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
if indexPath.row == 0
return 60.0
else
return 35.0
// Set the cells data
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if indexPath.row < myContact.count
let myContactSchedule = myContact[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "MainUsersAccount") as!
ContactsLayout
cell.setMyContact(myContacts: myContactSchedule)
return cell
else
let contactsSchedule = contacts[indexPath.row - myContact.count]
let cell = tableView.dequeueReusableCell(withIdentifier: "UserItem") as!
ContactsLayout
cell.setContacts(contacts: contactsSchedule)
return cell
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
let result = UIView()
// recreate insets from existing ones in the table view
let insets = tableView.separatorInset
let width = tableView.bounds.width - insets.left - insets.right
let sepFrame = CGRect(x: insets.left, y: -0.5, width: width, height: 0.5)
// create layer with separator, setting color
let sep = CALayer()
sep.frame = sepFrame
sep.backgroundColor = tableView.separatorColor?.cgColor
result.layer.addSublayer(sep)
return result
// Deselect Row
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
tableView.deselectRow(at: indexPath, animated: true)
这可能是一个相当容易回答的问题,但我是制作应用程序的新手,似乎无法找到一种简单的方法来存储它。
感谢您的宝贵时间,我们将不胜感激。
【问题讨论】:
【参考方案1】:您有多种选择来保存应用的数据。
您选择哪种存储选项取决于多种因素,例如计划存储的数据量、性能预期、数据结构的复杂程度、您是否计划跨设备同步数据(例如:同一用户在 iPhone 和 iPad 上安装应用程序)、安全注意事项等。
请记住,不可能给出详尽的清单。以下是一些基本选项。
存储选项 1: 本地存储在设备上的数据。
使用 Userdefaults - 快速简单,但不推荐。 将数据存储在设备上的文件中。 - 查看有关序列化的 ios 文档。 Core Data - 如果您希望拥有大量数据且数据结构复杂,请使用此数据。 其他数据库,如 SQLite。查看 FMDB。存储选项 2: 如果您计划从其他位置(其他设备、网络应用等)访问数据。
iCloud - Apple 的云存储解决方案。 Firebase 大量其他第三方存储即服务选项。【讨论】:
【参考方案2】:将联系人保存到您的本地数据库,例如 CoreData、领域 ...
【讨论】:
我怎么能做到这一点? 这不是一条有用的评论以上是关于本地保存数据(IOS)的主要内容,如果未能解决你的问题,请参考以下文章