本地保存数据(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)的主要内容,如果未能解决你的问题,请参考以下文章

使用swift在iOS上本地保存和检索包含所有元数据的照片

如何在 iOS 应用程序中缓冲视频并保存在本地数据库中?

iOS 本地存储四种方法

ios保存数据方式

IOS 四种保存数据的方式

IOS 四种保存数据的方式