Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 神奇记录的新功能:上下文不在数据存储中创建行_Ios_Core Data_Magicalrecord - Fatal编程技术网

Ios 神奇记录的新功能:上下文不在数据存储中创建行

Ios 神奇记录的新功能:上下文不在数据存储中创建行,ios,core-data,magicalrecord,Ios,Core Data,Magicalrecord,我有一个基于核心数据的应用程序,我决定尝试使用Magic Record。(基本上MR似乎做了我编写的助手类所做的许多事情) 但是,它基于模型创建了数据库,但当我尝试使用新插入的对象保存上下文时,它似乎成功了,但数据库中没有创建任何内容。为了确保新对象位于即将保存的上下文中,我告诉它保存,没有创建错误,但是没有数据。我想我在这里遗漏了什么 - (void)saveContext:(NSManagedObjectContext*)context withMessage:(NSString*)mess

我有一个基于核心数据的应用程序,我决定尝试使用Magic Record。(基本上MR似乎做了我编写的助手类所做的许多事情)

但是,它基于模型创建了数据库,但当我尝试使用新插入的对象保存上下文时,它似乎成功了,但数据库中没有创建任何内容。为了确保新对象位于即将保存的上下文中,我告诉它保存,没有创建错误,但是没有数据。我想我在这里遗漏了什么

- (void)saveContext:(NSManagedObjectContext*)context withMessage:(NSString*)messageString
{
    NSError *error = nil;
    NSString *message = messageString;
    NSManagedObjectContext *managedObjectContext = nil;
    if (!context) {
        managedObjectContext = [NSManagedObjectContext defaultContext];
    } else {
        managedObjectContext = context;
    }
    if(!message) {
        message = @"Data Saved";
    }
    if ([managedObjectContext hasChanges]) {
        [managedObjectContext save:&error];
        if (error) {
            NSLog(@"Save Error: %@", [error localizedDescription]);
        }
        else {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Save Successful!"
                                                            message:message
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
        }
    }
}
有什么见解吗?如前所述,我可以确认堆栈已设置(我在App Delegate的ApplicationIDFinishLoading方法中设置了堆栈,命名了存储),并且相应的数据库存在于预期位置,并具有相应的表。我可以确认managedObjectContext的insertedObjects中存在预期的新插入对象,并且保存不会导致任何错误。但是,保存后,数据不存在。(显然,在managedObjectContext中也是如此)


提前感谢。

我看不出您实际上在哪里保存实体,或者在代码中对实体进行更改

同样值得注意的是,您在该代码中做了太多的工作。您可能想做一些更像:

- (void) saveMyEntity:(NSObject<NSManagedObject *>) yourEntity;
{
    [MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext){

        yourEntity.message = @"something new";

    } completion:^{
        <UIAlert stuff here>
    }];
}
-(void)saveMyEntity:(NSObject)您的实体;
{
[MagicalRecord saveWithBlock:^(NSManagedObjectContext*localContext){
yourEntity.message=@“新事物”;
}完成:^{
}];
}

MagicalRecord提供了一个易于使用的API,它隐藏了大量关于如何保存数据等的繁琐记忆。阅读自述文件可能是一件好事。

好的,我仍然不知道我的代码出了什么问题,但不使用NSManagedObjectContext的保存方法似乎起到了作用。相反,我这样做了:

- (void)saveContextWithMessage:(NSString*)messageString
{
    NSString *message = messageString;
    if (!message) {
        message = @"Data Saved";
    }
    [MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext* localContext){}
                                  completion:^{
                                  UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Save Successful!"
                                                                                  message:message
                                                                                 delegate:nil
                                                                        cancelButtonTitle:@"OK"
                                                                        otherButtonTitles:nil];
                                  [alert show];
    }];
}

如前所述,我使用MR为我编写的代码进行操作,因此我删除了该代码以使其更清晰。

好的,这是我的保存方法。我在另一个类中调用它,在该类中创建并插入对象。因此,您是说我不应该使用此:[managedObjectContext save:&error];要保存上下文?我已经阅读了read me,但我不认为它表明告诉上下文保存不会以通常的方式保存。正如我所说,显然我遗漏了一些东西。