Tag: 核心数据

从Core Data实体生成Swift模型

更新Xcode 8: 在Xcode 8中,需要转到Core Data Model Editor和Show File Inspector。 底部附近是代码生成的选项。 selectSwift。 编辑 :我发现解决scheme从核心数据实体生成一个Swift模型: 在Xcode上: 编辑器>创buildNSManagedOjbect>单击button“下一步”>单击button“下一步”>select“Swift”语言>单击button“创build” 我使用Core Data在Xcode 6 beta上创build了一个新的Swift项目,尝试了Swift langage。 当我从我的Core Data实体生成我的模型时,Xcode创build了Objective-C模型。 有没有一种方法来生成Swift模型,而不是使用核心数据的Obejctive-C模型? 谢谢 !

如何处理关于核心数据,共享首选项和通知的Mac OS X Helper / Main应用程序体系结构?

对于我正在开发的一个项目(Mac OS X应用程序),我有一些架构上的疑虑。 它基本上由两个元素组成:一个在后台运行的守护进程收集一些数据和一个查看器用来表示收集到的数据。 守护进程应该在状态栏中显示(没有停靠图标),并且包括一个通过状态栏可访问的小菜单。 它将数据保存在核心数据存储中。 其中一个菜单项是打开查看器的链接 。 当这个查看器被打开时,一个正常的 GUI应用程序应该开始包括一个停靠图标和菜单栏。 打开应用程序本身时,也会打开查看器(通过双击图标)。 经过一番尝试,我发现实现这个function的最好方法是创build两个应用程序,代表查看器的主应用程序和代表守护程序的助手实用程序 。 我这样做的原因之一是,不能立即在LSUIElement值之间切换来强制守护程序/查看器状态。 现在我对这个架构有一些疑问: 守护进程和查看器应用程序都使用相同的核心数据存储来保存和检索数据。 当有一个multithreading的应用程序,我知道需要多个NSManagedObjectContext对象来正确同步数据。 如何让多个应用程序同时使用相同的核心数据存储? 这甚至可能没有冲突,锁等风险? 我如何保证一致性? 守护进程应该始终在查看器启动时启动。 我通过循环遍历所有打开的进程并检查守护进程的包标识符是否已列出来实现了这一点。 如果没有,守护进程将使用NSWorkspace的launchApplication启动。 这工作正常。 现在,当用户退出守护进程时,观察者也应该停止。 观察者被告知守护进程停止的最佳方式是什么? 如果守护进程不在,我可以定期检查活动进程并退出查看器,但这听起来有点奇怪。 我宁愿select某种在观众即将closures时发送的通知。 但是,由于这个通知应该在应用程序之间发送和捕获,我不知道哪个简单的通知服务可用。 有什么想法吗? 该应用程序是沙盒,因为它将分布在Mac App Store上。 使用NSWorkspace的launchApplication启动应用程序会导致目标应用程序在相同的沙盒环境中运行,因为在同一个沙箱中运行这两个应用程序感觉更好 ,可能也是这样。 但想象一下这种情况:守护进程在login时自动启动(使用SMLoginItemSetEnabled ),用户双击Viewer.app。 当守护进程已经运行(再次,这是通过循环活动进程检查),它不会被启动。 现在我们有守护进程和观察者在不同的沙箱中运行了吗? 这是否会导致喜好,核心数据存储等问题? 我想使用NSUserDefaults进行基本configuration,我可以以某种方式在守护进程和查看器之间交换这些数据吗? 同样,这两个应用程序将有不同的包标识符。 在此先感谢您的帮助,感激!

如何将NSManagedObject从一个上下文复制或移动到另一个上下文?

我有我认为是一个相当标准的设置,一个暂时保存从未保存(包含从网上下载的一堆对象)和另一个持久对象的永久MOC暂停MOC。 当用户从scratchMOC中select一个对象添加到她的库中时,我想要1)从scratchMOC中移除该对象并插入到permanentMOC中,或者2)将该对象复制到permanentMOC中。 核心数据常见问题说我可以像这样复制一个对象: NSManagedObjectID *objectID = [managedObject objectID]; NSManagedObject *copy = [context2 objectWithID:objectID]; (在这种情况下,context2将是permanentMOC。)但是,当我这样做时,复制的对象是故障的; 数据最初是未解决的。 当它得到解决后,所有的值都是零; 来自原始managedObject的数据(属性或关系)都没有被实际复制或引用。 因此,我看不出使用这个objectWithID:方法之间的任何区别,只是插入一个全新的对象到永久MOC使用insertNewObjectForEntityForName :. 我意识到我可以在permanentMOC中创build一个新对象,并手动复制旧对象中的每个键值对,但是我对这个解决scheme并不满意。 (我有一些不同的pipe理对象,我有这个问题,所以我不想写和更新副本:所有的方法,因为我继续开发。)有没有更好的办法?

核心数据(iPhone)的“自动轻量级移植”

我想使我的应用程序能够进行自动轻量级迁移,当我添加新的属性到我的核心数据模型。 在苹果的指南中,这是我能find的唯一信息: 自动轻量级迁移 要请求自动轻量级迁移,请在您通过addPersistentStoreWithType传递的选项字典中设置适当的标志:configuration:URL:options:error :. 您需要将对应于NSMigratePersistentStoresAutomaticallyOption和NSInferMappingModelAutomaticallyOption键的值设置为YES: NSError *error; NSURL *storeURL = <#The URL of a persistent store#>; NSPersistentStoreCoordinator *psc = <#The coordinator#>; NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; if (![psc addPersistentStoreWithType:<#Store type#> configuration:<#Configuration or nil#> URL:storeURL options:options error:&error]) { // Handle the error. } 我的NSPersistentStoreCoordinator是这样初始化的: – (NSPersistentStoreCoordinator *)persistentStoreCoordinator { […]

无法在iOS上创build托pipe对象上下文

我创build了一个非核心数据项目。 我现在想要使用核心数据。 在构build阶段,我将我的二进制文件与CoreData.framework链接起来。 在我的应用程序委托方法中,我想手动创build一个像这样的托pipe对象上下文 NSManagedObjectContext *aContext = [[NSManagedObjectContext alloc] init]; 当我这样做,我得到以下错误, Receiver 'NSManagedObjectContext' for class message is a forward declaration. 任何build议,我可能做错了什么?

最快的方法来检查核心数据中是否存在一个对象?

我想看看一个对象是否坚持在核心数据或不。 例如,我有核心数据中的朋友,我用firstName标识他们。 我可以查询核心数据来查看“George”是否已知。 如果结果集数组包含多于零的对象,我知道乔治在那里。 但核心数据将整个事物加载到内存中,而我只是想知道George是否存储了。 我将如何做到最有效的方式?

客户端(iOS)上的核心数据caching来自服务器的数据策略

我已经编写了许多与后端进行通信的iOS应用程序。 几乎每次,我都使用HTTPcaching来caching查询,并将响应数据(JSON)parsing到Objective-C对象中。 对于这个新项目,我想知道一个核心数据方法是否合理。 这是我的想法: iOS客户端向服务器发出请求,并将对象从JSONparsing到CoreData模型。 每次我需要一个新的对象,而不是直接获取服务器,我parsingCoreData,看看我是否已经提出了这个请求。 如果该对象存在并且没有过期,则使用获取的对象。 但是,如果对象不存在或已经过期(这里将应用一些caching逻辑),我将从服务器获取对象并相应地更新CoreData。 我认为有这样的架构可以帮助以下几点:1.避免对后端不必要的查询2.允许全面支持脱机浏览(您仍然可以使用DataCore的RDBMS进行关系查询) 现在这是我的问题: 我知道这有点需要编写后端逻辑第二次(服务器+ CoreData),但这是矫枉过正? 我有估计的任何限制? 任何其他的想法?

iPhone:将布尔值保存到核心数据中

我已经build立了一个我的核心数据属性为布尔值。 现在,我需要设置它,但XCode一直告诉我,它可能不响应setUseGPS。 [ride setUseGPS: useGPS.on]; 在核心数据中设置布尔值的方法是什么? 我所有的其他属性都是这样设置的,而且它们工作得很好。 所以,不知道为什么布尔值不能这样设置?

Swift 2,警告:无法从dyld共享caching中加载任何Objective-C类信息

我发现了一些关于这个问题的问题,但是他们都没有帮我解决问题。 我试图保存一个对象到核心数据使用这个代码(这在Xcode 6和模拟器中工作得很好): let fetchRequest = NSFetchRequest(entityName: "Patient") let fetchedResults : [NSManagedObject]! do { fetchedResults = try managedContext.executeFetchRequest(fetchRequest) as! [NSManagedObject] patienten = fetchedResults } catch { print("error") } 一旦我开始在Xcode 7testing版和物理设备上开发这个项目,我添加了do-try-catch。 现在,当我点击保存button,这段代码被调用,应用程序冻结,我得到以下内容: 警告:无法从dyld共享caching中加载任何Objective-C类信息。 这将显着降低可用types信息的质量。 有人知道我错了吗?

核心数据multithreading应用程序

我试图以multithreading的方式使用核心数据。 我只是想在后台下载新的数据的同时显示与以前下载的数据的应用程序。 这应该让用户在更新过程中访问应用程序。 我有一个NSURLConnection使用委托(并显示进度)asynchronous下载文件,然后我使用XMLParserparsing新的数据,并在独立的上下文中创build新的NSManagedObjects与自己的persistentStore和使用一个单独的线程。 问题是,在显示它的同一个上下文中创build新的对象可能会抛出BAD_INSTRUCTIONexception。 所以,我决定为新的数据使用一个单独的上下文,但我不能找出一种方法来完成后,将所有的对象移动到另一个上下文。 保罗又名SlowTree