无法添加持久性存储

问题描述 投票:0回答:1

我正在尝试在Library/Application-Support文件夹中添加sqlite持久性存储,如下所示:

- (NSManagedObjectModel *)managedObjectModel
{
    if (!_managedObjectModel)
    {
        NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"delete" withExtension:@"momd"];
        _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    }
    return _managedObjectModel;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (!_persistentStoreCoordinator)
    {
        @synchronized(self)
        {
            if (!_persistentStoreCoordinator)
            {
                NSError *error = nil;
                NSURL *storeURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] lastObject] @"delete.sqlite"];
                NSPersistentStoreCoordinator *persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
                NSPersistentStore * persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error];            
                _persistentStoreCoordinator = persistentStoreCoordinator;
            }
        }
    }
    return _persistentStoreCoordinator;
}

此操作失败,并出现以下错误:

CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) 
URL:file:///Users/harshithg/Library/Developer/CoreSimulator/Devices/D9A32558-558A-4E0E-915D-FEF25C772669/data/Containers/Data/Application/9517BBBB-E383-467E-B0E2-8960B734B239/Library/Application%20Support/delete.sqlite 
options:(null) ... 
returned error NSCocoaErrorDomain(512) with userInfo dictionary { reason = "Failed to create file; code = 2";

我在iOS 13.3和Xcode 11.3上。有人知道这里发生了什么吗?

ios objective-c iphone nsmanagedobjectcontext nspersistentstore
1个回答
1
投票
除非明确创建,否则“应用程序支持”文件夹将不存在。您的代码均未创建它。有一个NSFileManager方法可为您提供NSApplicationSupportDirectory URL

和同时创建它(如果尚不存在)。

https://developer.apple.com/documentation/foundation/nsfilemanager/1407693-urlfordirectory?language=objc
© www.soinside.com 2019 - 2024. All rights reserved.