Как импортировать данные JSON в sqllite БД с помощью swift4? - PullRequest
0 голосов
/ 09 ноября 2019

Привет, я новичок в разработке приложений для ios. У меня возникла ситуация, когда мне нужно выделить прочитанные сообщения некоторым фоновым цветом и проверить при следующем входе Вход в систему о новых сообщениях с сервера. где пользователь может понять, что это не прочитанные сообщения. Кто-нибудь может мне помочь с любыми решениями?

Я планирую использовать sqllite, но я новичок в базе данных. Я хотел понять, как хранить данные Json (ответ сервера) в базе данных sql lite и проверять новые записи, и если сообщения уже прочитаны, выделите их в табличном представлении. ниже приведен код, который я использую.

Ответ JSON с сервера:

body = "This is a test of user1 1st test notification";
createdDate = "0001-01-01T00:00:00";
id = "9e670ade-ac0b-40c5-a4b3-697fd09a756a";
important = 0;
sender = "firstname1.lastname1@noemail.com";
subject = "Seond Notification";

. Пожалуйста, помогите мне с кодом для сохранения этих данных JSON в дБ. и выделите в ячейке табличного представления, если сообщение прочитано. Ниже приведен код, который я написал для табличного представления

import Foundation
import UIKit
import Alamofire
import SwiftyJSON
import SwiftKeychainWrapper


  class Notificationcontroller: 
  UIViewController,UITableViewDelegate,UITableViewDataSource{



    @IBOutlet weak var tblJson: UITableView!

    var arrRes = [[String:AnyObject]]() //Array of dictionary
   let defaultValues = UserDefaults.standard

    override func viewDidLoad() {
        super.viewDidLoad()


        let retrieveduname: String? = 
   KeychainWrapper.standard.string(forKey: "userdata")
        let URL_USER_NOTIFICATION = 
"https://communitymgmtapi.azurewebsites.net/api/notification/"


        print(URL_USER_NOTIFICATION)
        let accesstoken: String? = 
   KeychainWrapper.standard.string(forKey: "tokennew")
        print(accesstoken)
           let headers = [
               "Authorization": "Bearer "+accesstoken!
           ]

        print(headers)
        Alamofire.request(URL_USER_NOTIFICATION,method: .get, 
    headers: headers).responseJSON { (responseData) -> Void in
            if((responseData.result.value) != nil) {
                print(responseData.result.value)
                let swiftyJsonVar = 
     JSON(responseData.result.value!)

                if let resData = swiftyJsonVar[].arrayObject {
                    self.arrRes = resData as! [[String:AnyObject]]
                }
                if self.arrRes.count > 0 {
                    self.tblJson.reloadData()
                }
            }
        }
    }



    func tableView(_ tableView: UITableView, heightForRowAt 
    indexPath: IndexPath) -> CGFloat {
        return 120
    }

   func tableView(_ tableView: UITableView, numberOfRowsInSection 
  section: Int) -> Int {
   return arrRes.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt 
 indexPath: IndexPath) -> UITableViewCell {

        let cell : newTableViewCell = 
tableView.dequeueReusableCell(withIdentifier: "Cell") as! 
newTableViewCell
   // let cell : UITableViewCell = 
 tableView.dequeueReusableCell(withIdentifier: "Cell")!
       var dict = arrRes[(indexPath as NSIndexPath).row]
        cell.headerlbl1?.text = dict["subject"] as? String
        cell.detailedlbl1?.text = dict["body"] as? String

       return cell

}

    func tableView(_ tableView: UITableView, didSelectRowAt 
   indexPath: IndexPath)
    {
        let detail:DetailViewController = 
 self.storyboard?.instantiateViewController(withIdentifier: 
  "Detail") as! DetailViewController
        var dictnew = arrRes[(indexPath as NSIndexPath).row]
        detail.strlbl = dictnew["subject"] as! String
        detail.strhdr = dictnew["body"] as! String
        self.navigationController?.pushViewController(detail, 
animated: true)
    }

    func tableView(_ tableView: UITableView, canEditRowAt 
 indexPath: IndexPath) -> Bool {
        return true
    }

    func tableView(_ tableView: UITableView, commit editingStyle: 
  UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            arrRes.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...