Tag: 核心数据

核心数据的预填充版本?

我的应用程序涉及通过互联网获取一个大型的json文件,然后parsing成核心数据。 这很好,但是我怎样才能将这个Core Data数据库的已经填充版本join到我的应用程序中,所以当它们第一次启动的时候它就在那里。 用户可以决定稍后刷新它。

Swift + CoreData:无法在NSManagedObject子类上设置Bool – Bug?

我有一个奇怪的问题,我似乎无法弄清楚,我有一个自定义NSManagedObject子类的简单实体: @objc(EntityTest) class EntityTest: NSManagedObject { @NSManaged var crDate: NSDate @NSManaged var name: String @NSManaged var completed: Bool @NSManaged var completedOn: NSDate } 这是问题,我可以创build对象罚款,并设置所有的价值和存储在一个数组。 不过最近,当我尝试检索相同的对象时,除了“completed”字段,我可以设置所有的值。 我得到一个运行时错误,说“EXC_BAD_ACCESS”,我可以读取的值,只是无法设置它。 debugging器指向: 0x32d40ae: je 0x32d4110 ; objc_msgSend + 108 0x32d40b0: movl (%eax), %edx 也许有些问题是由于它被当作一个Objective-C类,并试图发送消息来设置布尔值,我知道有点有趣的CoreData最初代表他们作为NSNumbers。 有任何想法吗? 我自己创build了这个类,它不是生成的。 编辑: entity.crDate = NSDate() // succeeds entity.completed = false // fails entity.completed.setValue(false, forKey: "completed") […]

在Core数据iOS中设置自动增量

我正在使用核心数据,并且希望将auto_increment ID设置为唯一的字段之一。 是否可以在iOS中使用核心数据设置auto_increment? 任何人都可以帮助我一个如何实现这个小示例? 以下是我在数据库中插入logging的代码。 在第一个字段“ID”,我想把它设置为auto_increment,而不是手动插入它。 – (NSManagedObjectContext *)managedObjectContext { NSManagedObjectContext *context = nil; id delegate = [[UIApplication sharedApplication] delegate]; if ([delegate performSelector:@selector(managedObjectContext)]) { context = [delegate managedObjectContext]; } return context; } NSManagedObjectContext *context = [self managedObjectContext]; // Create a new managed object NSManagedObject *newObj = [NSEntityDescription insertNewObjectForEntityForName:@"Users" inManagedObjectContext:context]; [newObj setValue:[NSNumber numberWithInt:userId] forKey:@"id"]; [newObj setValue:theFileName […]

为什么我不能使用“description”作为Core Data实体的属性名称?

我有一个简单的Core Data实体,它有一个名为“description”的string属性。 程序碰撞时崩溃: valueForKey:@"description" 我把“描述”属性改为“文本”,问题就解决了。 为什么会这样呢? “描述”是核心数据中的保留关键词吗? 它与从NSObject调用描述方法有关吗? 如果这些保留关键字存在,是否有引用?

在创build新对象时查询特定属性的核心数据,如果存在,则返回该对象;如果不存在,则创build一个新的对象

我有一个问题,在创build一个新对象之前,通过谓词检查一个实体的特定属性是否存在于核心数据库中; 如果对象存在,我宁愿返回它比创build一个新的对象。 我有一个简单的应用程序,在导航栏中有一个带有加号button的表格视图; 用户点击它,并带有4个文本字段的视图控制器。 他们填写这些信息,按保存,它被保存到核心数据,并显示在TableView中(通过使用NSFetchedResultsControllers)。 数据模型如下: 具有isReceived的事务实体BOOL属性具有名称string属性的Person实体具有标题string属性的Occasion实体具有数量string属性的Item实体 交易与Person(whoBy),Occasion(Occasion)和Item实体有关系。 在具有save方法的视图控制器中,我有下面的代码将新的对象插入交易,人员,场合实体等。每个交易当然是唯一的,但是对于每个交易,用户可以select现有的PERSON /或场合,如果那个人不存在,它将被创build(同样的情况下)。 我对这里的代码格式略有困惑。 编辑:我已经尝试了代码的组合,可以只是不能得到这个工作。 在下面的代码中,我在谓词中引用person.name,但是我也尝试创build一个本地的NSStringvariables来保存self.nameTextField.text代码,但是什么也没做。 我试图创build一个NSString属性来引用它的方式,这是行不通的。 我试着用MATCHES, LIKE, CONTAINS, ==和每个组合之间的单词。 – (IBAction)save:(id)sender { NSManagedObjectContext *context = [self managedObjectContext]; Transaction *transaction= [NSEntityDescription insertNewObjectForEntityForName:@"Transaction" inManagedObjectContext:context]; Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context]; Occasion *occasion = [NSEntityDescription insertNewObjectForEntityForName:@"Occasion" inManagedObjectContext:context]; Item *amount = [NSEntityDescription insertNewObjectForEntityForName:@"item" inManagedObjectContext:context]; NSFetchRequest *personFind = [NSFetchRequest fetchRequestWithEntityName:@"Person"]; personFind.predicate […]

核心数据中的子查询

我不明白我的预言有什么问题。 我有下一个数据库scheme: DataItem(color_ids) <->> (dataItem)Color 其中颜色包含colorID(int)。 我试图得到 all DataItems that contain colorID == 5. 我已经使用了下一个谓词: SUBQUERY(color_ids, $sub, $sub.colorID==5).@count > 0 谢谢你的帮助。

NSURL到NSData(cocoa错误256)

我需要序列化我的NSURL。 对象是NSManagedObject的types。 NSURL *objectURIRepresentation = [[object objectID] URIRepresentation]; NSError *error = nil; NSData *objectIDData = [NSData dataWithContentsOfURL:objectURIRepresentation options:NSDataReadingMapped error:&error]; 我得到错误:(cocoa错误256)。 有任何想法吗? 有些东西告诉我,使用dataWithContentsOfURL:不是个好主意。 更新 还有一个问题是错误地提出来的: [NSData dataWithContentsOfURL:uri];之间的区别是什么? 和[NSKeyedArchiver archivedDataWithRootObject:uri]; ? 谢谢。

核心数据中删除大量(10.000+)对象的最有效方法是什么?

我试图删除多组10.000 + NSManagedObjects的方式太内存密集(大约20MB活字节),我的应用程序正在被抛弃。 这里是删除方法的实现: + (void)deleteRelatedEntitiesInManagedObjectContext:(NSManagedObjectContext *)context { NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; [context setUndoManager:nil]; [fetch setEntity:[NSEntityDescription entityForName:NSStringFromClass(self) inManagedObjectContext:context]]; [fetch setIncludesPropertyValues:NO]; NSError *error = nil; NSArray *entities = [context executeFetchRequest:fetch error:&error]; NSInteger deletedCount = 0; for (NSManagedObject *item in entities) { [context deleteObject:item]; deletedCount++; if (deletedCount == 500) { [context save:&error]; deletedCount = 0; […]

使用Swift将CoreData实现到现有项目中

我目前正在使用Xcode 6 beta 7,并决定在创build我的项目之后我需要CoreData。 我已经看了一些已经问这个问题的客观C与一些在这个问题上观看video,但我似乎得到同样的错误。 至于我使用CoreData框架本身,我敢肯定,这是正确的,因为我创build了另一个空项目(核心数据框选中),并遵循相同的实施,它的工作像一个魅力,但可能有什么问题,我是也在那里做。 所以下面是我在Swift项目中实现CoreData的步骤。 第一步:我通过“Build Phases”下的“Link Binary with Libraries”标签添加了CoreData框架。 第2步:然后我去我的任何.swift文件需要实现CoreData(appDelegate.swift和另一个文件截至目前为止),并添加行: import CoreData 到顶部。 第3步:我创build了一个名为“cData”的实体的数据列表,然后为它创build了一个名为“data.swift”的类。 这里是data.swift: import UIKit import CoreData @objc( data ) class data: NSManagedObject { @NSManaged var something : String } 第四步:我写了代码来实际上将数据保存在另一个文件中: @IBAction func useCoreData(sender: AnyObject) { let AD : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate let ct : NSManagedObjectContext = AD.managedObjectContext! […]

核心数据:从多个实体或关系获取结果

我有两个实体。 Employee实体 @interface Employee : NSManagedObject @property (nonatomic, retain) NSString * dept; @property (nonatomic, retain) NSString * email; @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) Department *deptEmp; @end 和Department实体 @interface Department : NSManagedObject @property (nonatomic, retain) NSString * location; @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) Employee *deptEmp1; 我试图从下面的谓词中获取信息 NSMutableString *queryString […]