Привет, я новичок в разработке приложений для 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)
}
}
}