gpt4 book ai didi

ios - 尝试用 iOS 的核心数据中的另一个替换现有的实体对象

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

我在我的应用程序中使用 Core Data 进行存储,在应用程序中,有时我的“实体”会被修改(例如地址、城市、职位)。

我不想更新实体的特定属性,而是想通过创建一种方法来简化流程,在该方法中,我将存储中的现有实体替换为同一实体的更新版本(没什么特别的)。在我的方法中,我认为我必须获取所需的实体,但我实际上如何进行替换?这就是我感到困惑的地方。

这是我的相关代码:

    -(void)updateUser:(User *)user {

// Create fetch request
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:_managedObjectContext];
[fetchRequest setEntity:entity];

// Create predicate
NSPredicate *pred = [NSPredicate predicateWithFormat:@"userid == %@", user.userid];
[fetchRequest setPredicate:pred];

// Create fetched results controller
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = (id)self;

//what do I do next?

NSError *error;

if (![_managedObjectContext save:&error]) {

NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);

}

}

正如我所说,我只是想用新实体替换现有实体。我该怎么做?

最佳答案

我认为替换对象并不比更改属性简单。

但要执行您想要的操作,您需要这样的代码:

// I don't know the class for YourEntity, 
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (error) {
// handle fetch error
} else {
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"User" inManagedObjectContext:_managedObjectContext];
YourEntity *newEntity = [[YourEntity alloc] initWithEntityDescription:entityDescription insertIntoManagedObjectContext:_managedObjectContext];
// change settings on 'newEntity'

for (YourEntity *recordToDelete in results) {
[_managedObjectContext deleteItem:recordToDelete];
}
[_managedObjectContext save:&error];
if (error) {
// handle save error
}
}

关于ios - 尝试用 iOS 的核心数据中的另一个替换现有的实体对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18925796/

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