如何删除Xcode中的旧数据模型?菜单上禁用该选项.(我想删除的模型尚未向公众发布 - 它们是临时开发模型.)
假设我有两个实体类:SocialApp和SocialAppType
在SocialApp我有一个属性:appURL和一个关系:type.
在SocialAppType我有三个属性:baseURL,name和favicon.
SocialApp关系的目的地type是单个记录SocialAppType.
例如,对于多个Flickr帐户,会有许多SocialApp记录,每条记录都包含指向某个人帐户的链接.会有一个SocialAppType针对"Flickr的"类型的记录,所有SocialApp记录将指向.
当我使用这个模式构建一个应用程序时,我得到一个警告,即SocialAppType和之间没有反比关系SocialApp.
/Users/username/Developer/objc/TestApp/TestApp.xcdatamodel:SocialApp.type: warning: SocialApp.type -- relationship does not have an inverse
Run Code Online (Sandbox Code Playgroud)
我需要反转,为什么?
我正在尝试在基于CoreData的iPhone应用程序中实现搜索代码.我不知道该怎么办.该应用程序已经有一个带有谓词的NSFetchedResultsController,用于检索主TableView的数据.在改变太多代码之前,我想确保自己走在正确的道路上.我很困惑,因为很多例子都是基于数组而不是CoreData.
以下是一些问题:
我是否需要第二个NSFetchedResultsController只检索匹配的项目,或者我可以使用与主TableView相同的项目吗?
如果我使用相同的,它是否像清除FRC缓存然后更改handleSearchForTerm:searchString方法中的谓词一样简单?谓词是否必须包含初始谓词以及搜索词,还是记得它首先使用谓词来检索数据?
我如何回到原始结果?我只是将搜索谓词设置为nil吗?难道不会杀掉用于首先检索FRC结果的原始谓词吗?
如果有人使用FRC搜索任何代码示例,我将不胜感激!
iphone search core-data uisearchbar uisearchdisplaycontroller
我想将核心数据添加到现有的iPhone项目中,但我仍然遇到很多编译错误:
- NSManagedObjectContext undeclared
- Expected specifier-qualifier-list before 'NSManagedObjectModel'
- ...
Run Code Online (Sandbox Code Playgroud)
我已经将核心数据框架添加到目标(右键单击我的项目"Targets","Add" - "Existing Frameworks","CoreData.framework").
我的头文件:
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
[...]
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
Run Code Online (Sandbox Code Playgroud)
我错过了什么?开始一个新项目不是一个选择......
非常感谢!
编辑
对不起,我确实有这些实现...但似乎缺少库...实现方法已满,编译错误如" managedObjectContext undeclared"," NSPersistentStoreCoordinator undeclared",但也有"预期")'之前NSManagedObjectContext"(虽然它似乎括号是正确的)...
#pragma mark -
#pragma mark Core Data stack
/**
Returns the managed object context for the application.
If the context doesn't already exist, it is created and …Run Code Online (Sandbox Code Playgroud) 在Xcode 6中,我有一个应用程序,我正在使用Core Data,但iOS 8 iPhone模拟器的应用程序支持中没有文件夹.我的文件和Core Data sqlite数据库存储在哪里?
我正在开发一个使用Core Data的应用程序.当我使用以下方法创建实例时:
let entity = NSEntityDescription.entityForName("User", inManagedObjectContext: appDelegate.managedObjectContext)
let user = User(entity: entity, insertIntoManagedObjectContext: appDelegate.managedObjectContext)
Run Code Online (Sandbox Code Playgroud)
我在日志中收到警告:
CoreData: warning: Unable to load class named 'User' for entity 'User'. Class not found, using default NSManagedObject instead.
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
另一个问题是,如何在NSManagedObject子类中定义实例方法?
编辑:
我已经指定了实体的类,如下面的屏幕截图所示:

我有一个带有NSDate属性的Core Data模型.我想白天过滤数据库.我认为解决方案将涉及一个NSPredicate,但我不知道如何将它们放在一起.
我知道如何比较NSDate使用NSDateComponents和的两天的日子NSCalendar,但是如何用一个NSPredicate?
也许我需要在我的NSManagedObject子类上创建一个类别,它可以返回只有年,月和日的裸日期.然后我可以比较一下NSPredicate.这是你的推荐,还是有更简单的东西?
core-data objective-c nsdate nspredicate nsfetchedresultscontroller
我已经坚持了几个小时的问题,并且已经在stackoverflow上阅读了所有相关信息(并应用了所有建议),我现在正式需要帮助.; O)
以下是上下文:
在我的iPhone项目中,我需要在后台导入数据并将其插入到托管对象上下文中.按照这里的建议,这是我正在做的事情:
有时(和随机),例外......
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0x5e0b930> was mutated while being enumerated...
Run Code Online (Sandbox Code Playgroud)
当我在后台moc上调用executeFetchRequest时,抛出...以检查导入的数据是否已存在于数据库中.我想知道什么是变异集,因为没有任何东西在import方法之外运行.
我已经包含了我的控制器和我的测试实体的整个代码(我的项目由这两个类和app委托组成,未经修改):
//
// RootViewController.h
// FK1
//
// Created by Eric on 09/08/10.
// Copyright (c) 2010 __MyCompanyName__. All rights reserved.
//
#import <CoreData/CoreData.h>
@interface RootViewController : UITableViewController <NSFetchedResultsControllerDelegate> {
NSManagedObjectContext *managedObjectContext;
NSManagedObjectContext *backgroundMOC;
}
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObjectContext *backgroundMOC;
@end
// …Run Code Online (Sandbox Code Playgroud) 我可以使用以下代码轻松地在Core Data中获取对象的ID:
NSManagedObjectID *moID = [managedObject objectID];
Run Code Online (Sandbox Code Playgroud)
但是,是否有办法通过为对象提供特定的对象ID来将对象从核心数据存储中取出?我知道我可以通过使用NSFetchRequest来实现这一点,如下所示:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID = %@)", myObjectID];
[fetchRequest setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
但是,我想以不启动自己的获取请求的方式执行此操作.有任何想法吗?
有一篇关于为您自己的框架设置错误域的SO帖子,但是关于为您自己的项目/应用程序设置错误域和自定义错误代码的最佳做法是什么?
例如,假设您正在使用具有大量验证的核心数据密集型应用程序,您是否应该坚持使用"现成的"核心数据错误代码(例如NSManagedObjectValidationError来自CoreDataErrors.h),或者您应该创建自己的错误代码MyAppErrors.h并定义错误更具特异性(即MyAppValidationErrorInvalidCombinationOfLimbs?
创建自定义错误域和错误代码集可能会明显消除代码歧义,但维护过多是否需要担心错误代码编号冲突?或者还有其他问题吗?
core-data ×10
ios ×4
cocoa ×3
objective-c ×3
xcode ×2
ios8 ×1
iphone ×1
macos ×1
nsdate ×1
nserror ×1
nspredicate ×1
search ×1
swift ×1
uisearchbar ×1
xcdatamodel ×1
xcode6 ×1