swift - 如何在 xcode swift 上将对象存储在本地数据库中
问题描述
我在我的应用程序中创建了一个类我正在创建这个类的多个实例/对象,我希望能够创建这些对象并将它们存储在本地存储中,并且能够在应用程序重新启动后初始化这些对象再次。我想知道,如果无论如何我能够有效地存储这些对象,或者将值存储在对象中并能够在程序启动后再次初始化它们。
//
// MealPlan.swift
// IA
//
// Created by Ian Dong on 8/25/20.
// Copyright © 2020 Ian Dong. All rights reserved.
//
import Foundation
struct MealPlan {
var ingerdientList: [IngerdientCost] = [];
var k: Int = 0;
var serving : Int
var cost : [IngerdientCost] = [];
var name : String;
init ( size: Int, name: String){
self.serving = size;
self.name = name;
}
mutating func addIngerdient (newIngerdient: IngerdientCost){
ingerdientList.insert(newIngerdient, at: k);
k = k+1;
}
mutating func removeINgerdient(theIngerdient: IngerdientCost)
{
var c: Int = 0;
while theIngerdient.amount != ingerdientList[c].amount && c <= k
{
c=c+1;
}
ingerdientList.remove(at: c);
k=k-1;
}
mutating func getCost() -> Array<IngerdientCost>
{
var c: Int = 0;
while c <= ingerdientList.count
{
cost[c].ingerdientName = ingerdientList[c].ingerdientName;
cost[c].amount = ingerdientList[c].amount * Double(serving);
c = c+1;
}
return cost;
}
mutating func setServing( serv: Int)
{
self.serving = serv;
}
}
import Foundation
struct IngerdientCost{
init(Name: Ingerdient, Amount: Double )
{
self.amount = Amount;
self.ingerdientName = Name;
}
var ingerdientName: Ingerdient;
var amount: Double;
}
//
// Ingerident.swift
// IA
//
// Created by Ian Dong on 8/25/20.
// Copyright © 2020 Ian Dong. All rights reserved.
//
import Foundation
struct Ingerdient {
var name: String;
var amount: Double;
init (Name:String, Amount:Double)
{
self.name = Name;
self.amount = Amount;
}
mutating func setname (newname :String)
{
self.name = newname;
}
mutating func setamount (newamount : Double)
{
self.amount = newamount;
}
func getName() -> String
{
return self.name
}
func getAmount() -> Double
{
return self.amount
}
}
struct IngerdientList {
var completeList: [Ingerdient] = [];
}
解决方案
我建议使用 CoreData,但有时会有点困难。您可以尝试看看 Realm,它是 CoreData 的一种“无痛”替代品。CoreData 由 Apple 提供,因此从长远来看,它可能会更可靠。但在我看来,Realm 有一种更直观的方式来持久化数据,因为对象的组织方式。Realm 和 CoreData 都同样强大,但是我听说 Realm 在查询时比 CoreData 快。
推荐阅读
- windows - Microsoft.Assumes+InternalErrorException:文件不应依赖于自身。在 asp.net core 3.1 视觉工作室窗口上
- mysql - 字段列表说明中的未知列
- html - 添加指向 SVG 文件的链接
- firebase - 新的颤振 Firebase 身份验证包中的租户属性是什么?
- javascript - 具有枚举字段的条件逻辑
- javascript - 在页面加载后选择一个 Slick 滑块 1.3.5,以便它具有使用箭头键导航的焦点
- c++ - 当时间字符串使用“PM”字段时,如何始终使用 std::put_time std::get_time 往返?
- mysql - mysql - 根据表中列值最高的id连接表行
- javascript - 数组的索引是否有任何理由不能/不应该用作对象列表的唯一标识符?
- python - 如何制作对象的列表元素实例