gpt4 book ai didi

ios - 魔法记录新手: context not creating rows in datastore

转载 作者:行者123 更新时间:2023-11-29 04:22:34 34 4
gpt4 key购买 nike

我有一个基于核心数据的应用程序,我决定尝试使用 Magical 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];
}
}
}

有什么见解吗?正如我所提到的,我可以确认堆栈已设置(我在应用程序委托(delegate)的 applicationDidFinishLoading 方法中执行此操作,命名存储),并且相应的数据库存在于预期位置,并具有适当的表。我可以确认 ManagedObjectContext 的 insertObjects 中存在预期的新插入对象,并且保存不会导致任何错误。但是保存后,数据却没有了。 (显然它也不在 ManagedObjectContext 中)

提前致谢。

最佳答案

我看不到您实际上在哪里保存实体,或在该代码中更改实体。

还值得注意的是,您在该代码中做了太多工作。您可能想做的事情更像是:

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

yourEntity.message = @"something new";

} completion:^{
<UIAlert stuff here>
}];
}

MagicalRecord 提供了一个易于使用的 API,隐藏了相当多的记住如何保存数据等的单调乏味的事情。阅读 README 文件可能会很好。

关于ios - 魔法记录新手: context not creating rows in datastore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12790490/

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