gpt4 book ai didi

ios - 我在保存单个对象时遇到问题,而不是将所有对象保存在 NSMangedObject 堆栈中??

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:00 25 4
gpt4 key购买 nike

我是 IOS 编程的新手,目前正在学习核心数据,我开始运行只需要在核心数据中保存特定对象的代码。那我该怎么做呢?

根据场景,我有来自服务器的数据以及本地存储(核心数据),但是当用户关闭应用程序(进入后台)时我想将数据存储在服务器中(如果网络可用)如果没有然后在本地存储中(但仅选择 - 意味着应存储特定数据,有些对象来自在线服务器,我不想存储在本地)。

如果可能,请告诉我任何解决方案。

问候尼萨尔艾哈迈德

最佳答案

我看到了两种实现此目的的方法:

  1. 遍历插入和更新的对象并还原那些您不打算保存的对象。插入的对象应该删除,更新的应该刷新:

    for (NSManagedObject* obj in [self.managedObjectContext insertedObjects]) {
    if (/*Shouldn't be saved*/) {
    [self.managedObjectContext deleteObject:obj];
    }
    }

    for (NSManagedObject* obj in [self.managedObjectContext updatedObjects]) {
    if (/*Shouldn't be saved*/) {
    [self.managedObjectContext refreshObject:obj mergeChanges:NO];
    }
    }
  2. 创建单独的托管对象上下文。重新创建要在新上下文中保存的对象,然后保存它。

    NSManagedObjectContext* newContext = [[NSManagedObjectContext alloc] init];
    [newContext setPersistentStoreCoordinator:[self.managedObjectContext persistentStoreCoordinator]];
    for (NSManagedObject* obj in objectsWantToSave) {
    NSEntityDescription* entity = [obj entity];
    NSDictionary* valuesByKeys = [obj dictionaryWithValuesForKeys:[[entity attributesByName] allKeys]];
    NSManagedObject* objCopy = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:newContext];
    [objCopy setValuesForKeysWithDictionary:valuesByKeys];
    }
    [newContext save:NULL];

我认为第二种方法更好。

关于ios - 我在保存单个对象时遇到问题,而不是将所有对象保存在 NSMangedObject 堆栈中??,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14935954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com