2016-03-14 52 views
-1

因此,我正在尝试使用父应用程序存储的数据创建今天的窗口小部件扩展。无法用无URL创建SQL存储

我试图通过创建Persistent Store Coordinator来做到这一点,就像您在父应用程序中做的一样,并使用主应用程序数据库的URL。

但是,当这样做时,我得到以下错误;

2016年3月13日12:59:02.155 TodayWidget [10942:1456153]无法从5079继承 CoreMedia权限:(空)2016年3月13日12:59:02.336 TodayWidget [10942:1456112 ] ***由于未被捕获而终止应用程序 异常'NSInvalidArgumentException',原因:'无法创建具有零URL的SQL 存储'。

以下是我在“今日”小部件视图控制器中所做的操作。 containerPath与今天的扩展目标的包标识符相同。 containerPath?.URLByAppendingPathComponent sql文件名与父应用程序核心数据堆sql文件名相同,modelURL与父应用程序中的相同。

var context: NSManagedObjectContext! 

let fileManager = NSFileManager.defaultManager() 
var containerPath = fileManager.containerURLForSecurityApplicationGroupIdentifier("com.company.APPNAME.TodayWidget") 

containerPath = containerPath?.URLByAppendingPathComponent("SingleViewCoreData.sqlite") 
let modelURL = NSBundle.mainBundle().URLForResource("APPNAME", withExtension: "mom") 
let model = NSManagedObjectModel(contentsOfURL: modelURL!) 
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model!) 
    do { 
     try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: containerPath, options: nil) 
    } catch { 
    print("yellow") 
    } 

    context = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) 
    context.persistentStoreCoordinator = coordinator 

有谁知道我该如何解决这个错误?

PS:我已经启用并创建了应用组,并添加了当天窗口小部件作为核心数据模型和子类的目标。

+0

没有人已经解释了原因,其他时间,你问,然后删除该问题? – 2016-03-14 22:04:43

+0

@PetahChristian不,他们只是说我应该调查containerPath,问题也不是很详细,问题本身也不清楚。 – RileyDev

+0

你为什么不改进原来的问题?关于错误没有任何改变。和以前一样,你的'containerPath'仍然是零。 – 2016-03-14 23:20:48

回答

2

"com.company.APPNAME.TodayWidget"看起来很可疑。它看起来像你今天小部件的包ID。 containerURLForSecurityApplicationGroupIdentifier()的参数应该是您在设置com.apple.security.application-groups功能时指定的字符串。

+0

转到您的应用程序目标>功能>应用程序组,以检查字符串 – JSA986