核心数据不保存到 sqlite 数据库

Posted

技术标签:

【中文标题】核心数据不保存到 sqlite 数据库【英文标题】:Core data doesn't save to sqlite database 【发布时间】:2014-09-08 06:20:48 【问题描述】:

我试图搜索答案,但没有任何帮助( 所以我尝试像这样将数据保存在核心数据ios

-(void) insertHeaderCatalogsToDataBase

    UBCoreDataStack *coreDataStack = [UBCoreDataStack defaultStack];
    UBMenuHeader *menuHeader = [NSEntityDescription insertNewObjectForEntityForName:@"UBMenuHeader" inManagedObjectContext:coreDataStack.managedObjectContext];
    menuHeader.name = @"Комплекты";
    [coreDataStack saveContext];


UBCoreDataStack - 是一个单例类,从委托切到这个类。

@interface UBCoreDataStack : NSObject

+(instancetype) defaultStack;

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;

@end

所以当我尝试保存时没有错误,并且 hasChanges 返回 true

- (void)saveContext

    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil) 
        if ([managedObjectContext save:&error] == NO) 
            NSLog(@"Error saving: %@\n%@", [error localizedDescription], [error userInfo]);
        
        if([managedObjectContext hasChanges])
            NSLog(@"There are some changes");
        
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) 
            // Replace this implementation with code to handle the error appropriately.
            // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        
    

当我使用 sqlite 数据库打开文件夹时,DBname.sqlite 没有任何更改,但 sqlite-shm 和 sqlite-wal 有。所以可能我忘记了将值传递给 sqlite DB 的东西

【问题讨论】:

【参考方案1】:

抱歉,数据已到位。 sqlite没有变化是正常的,但是sqlite-shm和sqlite-wal有变化。

【讨论】:

以上是关于核心数据不保存到 sqlite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何为基于文档的核心数据应用程序的保存对话框预设文件格式到 sqlite?

核心数据量大

核心数据 SQLite 文件无数据

核心数据 SQLite 文件

核心数据 SQLite 加密?

核心数据:SQLite 没有立即更新