我有一小部分数据需要在用户首次启动应用时预先填充。我已经看过其他选项,比如将应用程序与现有的sqlite文件或csv / json捆绑在一起,但由于需要预加载的数据只有一个数据模型的4条记录,如
var categories = [category1, category2, category3, category4]
,我觉得如果我对此进行硬编码会更有效率。
但我如何确保此插入调用仅在第一次运行时执行一次?
答案 0 :(得分:1)
我为我的应用预加载数据,我处理以下两种方式之一:
NSUserDefaults
中设置您已完成导入的位,然后在启动时检查该位(例如,这也可以扩展为允许在新版本上轻松更新文件)。答案 1 :(得分:1)
您可以搜索实体,如果该实体返回0结果,您可以使用初始信息填充它。
var managedContext: NSManagedObjectContext!
let dataFetch = NSFetchRequest(entityName: "Data")
var result:[MyData]?
do {
result = try managedContext.executeFetchRequest(dataFetch) as? [MyData]
} catch {
print("Error fetching data")
}
if let data = result {
if data.count == 0 {
//create your data and save it
}
}
答案 2 :(得分:0)
这可能已经很晚了,你可能已经修好了,但我刚才有这个问题。
您可以在AppDelegate中设置类似以下的内容:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let defaults = UserDefaults.standard
let isPreloaded = defaults.bool(forKey: "isPreloaded")
if !isPreloaded {
preloadData()
defaults.set(true, forKey: "isPreloaded")
}
return true
}
这样,您的应用程序每次都会检查它是否已预先加载数据,如果有,则会跳过它。这假设你已经有了某种设置的preloadData函数。