首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何更新核心数据中已有的对象?

如何更新核心数据中已有的对象?
EN

Stack Overflow用户
提问于 2012-05-13 20:39:29
回答 4查看 93.9K关注 0票数 63

当我插入新对象时,我会使用以下代码:

代码语言:javascript
复制
NSManagedObjectContext *context = [appDelegate managedObjectContext];

Favorits *favorits = [NSEntityDescription insertNewObjectForEntityForName:@"Favorits" inManagedObjectContext:context];

favorits.title = @"Some title";

NSError *error;                    
if (![context save:&error]) {
    NSLog(@"Whoops");
}

如何更新核心数据中的现有对象?

EN

回答 4

Stack Overflow用户

发布于 2012-05-13 21:16:56

您必须从上下文中fetch对象,更改所需的属性,然后保存示例中的上下文。

票数 11
EN

Stack Overflow用户

发布于 2015-07-25 14:28:42

我希望这对你有帮助,因为它对我很有效。

代码语言:javascript
复制
 NSMutableArray *results = [[NSMutableArray alloc]init];
int flag=0;
NSPredicate *pred;
if (self.txtCourseNo.text.length > 0) {
    pred =  [NSPredicate predicateWithFormat:@"courseno CONTAINS[cd] %@", self.txtCourseNo.text];
    flag=1;
} else {
    flag=0;
    NSLog(@"Enter Corect Course number");
}

if (flag == 1) {

    NSLog(@"predicate: %@",pred);
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]initWithEntityName:@"Course"];
    [fetchRequest setPredicate:pred];
    results = [[self.context executeFetchRequest:fetchRequest error:nil] mutableCopy];


    if (results.count > 0) {
        NSManagedObject* favoritsGrabbed = [results objectAtIndex:0];
        [favoritsGrabbed setValue:self.txtCourseName.text forKey:@"coursename"];
        [self.context save:nil];
        [self showData];
    } else {
        NSLog(@"Enter Corect Course number");
    }



}
票数 7
EN

Stack Overflow用户

发布于 2018-05-22 12:36:44

如果你是一个敏捷的程序员,这可以帮助你:

如果要删除NSManagedObject

在我的例子中,ID是实体学生的唯一属性

代码语言:javascript
复制
/** for deleting items */

func delete(identifier: String) {

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "STUDENT")
    let predicate = NSPredicate(format: "ID = '\(identifier)'")
    fetchRequest.predicate = predicate
    do
    {
        let object = try context.fetch(fetchRequest)
        if object.count == 1
        {
            let objectDelete = object.first as! NSManagedObject

                 context.delete(objectDelete)
        }
    }
    catch
    {
        print(error)
    }
} 

如果您想要更新NSManagedObject:

代码语言:javascript
复制
/** for updating items */
func update(identifier: String,name:String) {

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "STUDENT")
    let predicate = NSPredicate(format: "ID = '\(identifier)'")
    fetchRequest.predicate = predicate
    do
    {
        let object = try context.fetch(fetchRequest)
        if object.count == 1
        {
            let objectUpdate = object.first as! NSManagedObject
            objectUpdate.setValue(name, forKey: "name")
            do{
                try context.save()
            }
            catch
            {
                print(error)
            }
        }
    }
    catch
    {
        print(error)
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10571786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档