标签: core-data

如何在代码中复制Core Data托管对象

我甚至不确定我是否说明了这一点,但我正在尝试复制用户创建的coredata对象intstance,并且很难搞清楚它.

我有一个对象(问题)从中拉出来managedObjectContext.

这来自我的数据库中有很多问题的测验.

我在内存中有一个名为question1的Question实例.我想将question1复制到一个名为question2的实例.

Question *question2 = question1;
Run Code Online (Sandbox Code Playgroud)

有时工作但有时也崩溃(我知道它不是正确的方法)

我一直在搞乱NSCopying和-(id)copyWithZone:(NSZone *)区域,但我只是得到了一个空白的实例.

如果有人能提供帮助,那将非常感谢!

这里有一些细节.

我有问题1它是问题的一个实例.例如,question1.answer将返回问题的答案.

我想简单地将问题1复制到问题2.我不需要在数据模型中存储question2或者我只需要在循环中使用它然后释放.

基本上我想这样做:

Question *question2 = question1;
NSLog(@"%@", question2.answer)
Run Code Online (Sandbox Code Playgroud)

以上是有时工作但有时我在nslog行上遇到随机崩溃.

xcode core-data ios

0
推荐指数
1
解决办法
2985
查看次数

核心数据并发 - 集合在枚举时发生了变异

Transaction在我的Core Data应用程序中添加了一些名为s的对象.这些交易与帐户相关联.

我想在保存所有交易时更新帐户金额.有时会出现并发异常

"收集在被列举时发生变异"

NSArray *matches = [managedObjectContext executeFetchRequest:request error:&error];accountManagedObjectWithId方法中排队.

//TransactionsManager

- (BOOL)addRepeatTransaction:(Transaction *)transaction{

    Account *accountTrx = transaction.account;
    double accountAmount = accountTrx.amount;
    for (int i =0; i<nbRepeat; i++){
         accountAmount +=transactionBiz.amount;
        [[Persister instance] registerTransaction:transaction];
    }
    [[Persister instance]editAmountAccount:transaction.account amount:accountAmount];
    [[Persister instance]saveContext];

    return YES;
}

//Persister

-(id)init {
    if (self = [super init]){
        managedObjectContext = [appDelegate managedObjectContext];
        return self;
    }
    return nil;
}

-(BOOL)registerTransaction:(Transaction *)transaction {
    TransactionManagedObject *transactionsRow = (TransactionsManagedObject *)[NSEntityDescription insertNewObjectForEntityForName:@"Transactions" inManagedObjectContext:managedObjectContext];

    transactionsRow.idTransaction =  [NSNumber numberWithInt:transaction.idTransaction];
    transactionsRow.name …
Run Code Online (Sandbox Code Playgroud)

concurrency core-data nsmanagedobjectcontext

0
推荐指数
1
解决办法
3747
查看次数

如何使用魔法记录获取记录时获得"最新记录"

获取记录时如何获取最新记录?

例如:

  • 第一次迭代我用对象名称Country保存"Singapore",
  • 第二次迭代我用对象名称Country保存"USA",第二次

现在当我拿它

SomeDatabase *Country = [SomeDatabase MR_findFirst];

NSLog(@"Country Name---->%@",Country.Name); 
Run Code Online (Sandbox Code Playgroud)

我得到"新加坡",

我想把最后一条记录插入到coredata,它应该是"USA".

core-data ios magicalrecord

0
推荐指数
1
解决办法
2497
查看次数

核心数据和每个对象的唯一UIImage

我正在创建一个简单的应用程序,用户可以创建使用CoreData保存的多个对象.

我的问题是,我希望每个对象都有一个链接到它的图像.图像由iphone相机或用户个人相机胶卷带来,因此图像将具有相当高的重量(我认为每个> 1MB).我读到当图像的权重很高时,处理这个问题的好方法是将图像保存在documentsDirectory文件夹中,并保存到coreData的路径.我很容易实现这一点.

但是如何找到要链接到唯一对象的图像的路径名?CoreData并没有真正处理唯一的ID,并且两个对象可以具有相同的名称...我搜索了objectID,但它的工作效果并不好,我不确定这是处理这个问题的好方法.

你有什么主意吗?还有一种我完全失踪的简单方法吗?先感谢您.

core-data objective-c save uiimage ios

0
推荐指数
1
解决办法
386
查看次数

如何确定NSManagedObjectID是否为permament?

我想确保我正在使用的NSManagedObject具有永久NSManagedObjectID.我知道它只在[NSManagedObjectContext save:]或[NSManagedObjectContext obtainPermanentIDsForObjects:error:]上永久化.但是,在我保存上下文以获取永久ID之前,有没有办法确定对象是否具有永久ID?这样我就不会不必要地保存商店.

iphone core-data objective-c nsmanagedobject ios

0
推荐指数
1
解决办法
340
查看次数

核心数据无法识别选择器错误

我正在使用Core Data来保存一些字符串.我有以下类名为Results

Results.h

#import <CoreData/CoreData.h>

@interface Results : NSManagedObject

@property(nonatomic, retain) NSString *lessondate;
@property(nonatomic, retain) NSString *lesson;
@property(nonatomic, retain) NSString *location;
@property(nonatomic, retain) NSString *start;
@property(nonatomic, retain) NSString *end;

@end
Run Code Online (Sandbox Code Playgroud)

Results.m

#import "Results.h"

@implementation Results

@dynamic lessondate;
@dynamic lesson;
@dynamic location;
@dynamic start;
@dynamic end;

@end
Run Code Online (Sandbox Code Playgroud)

以下是我执行保存的代码:

-(void)saveLesson{

Results *result = (Results *)[NSEntityDescription insertNewObjectForEntityForName:@"Diary" inManagedObjectContext:managedObjectContext];

result.lessondate = calendarDateString;
result.lesson = [NSString stringWithFormat:@"%@", lessonText.text];
result.location = [NSString stringWithFormat:@"%@", locationTest.text];
result.start = [NSString stringWithFormat:@"%@", startTimeText.text];
result.end = [NSString stringWithFormat:@"%@", endTimeText.text];
NSError *error; …
Run Code Online (Sandbox Code Playgroud)

core-data nsmanagedobject ios

0
推荐指数
1
解决办法
2300
查看次数

- [__ NSDictionaryM intValue]:无法识别的选择器发送到实例0x13f26a60

我正在尝试获取核心数据库的记录,但它给了我以下错误.

错误 - [__ NSDictionaryM intValue]:无法识别的选择器发送到实例0x13f26a60

在线

NSArray *results = [moc executeFetchRequest:request error:&error];
Run Code Online (Sandbox Code Playgroud)

这是获取请求的完整代码.

NSManagedObjectContext *moc = [delegate managedObjectContext];


NSPredicate *predicate =[NSPredicate predicateWithFormat:@"NOT (serverId IN %@)", a];
[request setEntity:[NSEntityDescription entityForName:@"Categories" inManagedObjectContext:moc]];
[request setPredicate:predicate];

NSError *error = nil;
id results = [moc executeFetchRequest:request error:&error];
NSLog(@"results %@",results);
// error handling code
[request release];
Run Code Online (Sandbox Code Playgroud)

core-data objective-c ios

0
推荐指数
1
解决办法
5291
查看次数

将图像保存到Core Data

从以下源文件,我尝试加载图像并保存到Core数据,并在imageView中显示,但它不起作用你可以帮我修复它.

- (IBAction)save:(id)sender
{
    NSLog(@"Telling the AddTrackingTVC Delegate that save was tapped on the     AddTrackingTVC");

    [self.delegate theSaveButtonOnTheAddPlantNoteTVCWasTapped:self];

    MyPlant *myTracking = [NSEntityDescription insertNewObjectForEntityForName:@"MyPlant" inManagedObjectContext:self.managedObjectContext];

    myTracking.name = nameTextField.text;
    myTracking.detail = detailTextField.text;
    myTracking.createdDate = [NSDate date];
    //myTracking.photo = [NSData ];
    [self.managedObjectContext save:nil]; // write data to database
    [self.delegate theSaveButtonOnTheAddPlantNoteTVCWasTapped:self];
}




- (IBAction)takePicture:(id)sender {
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
    // If our device has a camera, we want to take a picture, otherwise, we // just pick from photo library
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) …
Run Code Online (Sandbox Code Playgroud)

core-data uiimage ios

0
推荐指数
1
解决办法
3145
查看次数

设置持久存储和父上下文

NSManagedObjectContext调用持久存储和父上下文设置和保存时会发生什么?它会将数据逐个推送到持久存储和父上下文吗?或者它会同时进行吗?或核心数据是否会引发抱怨异常?

API不直接阻止一个人为给定的上下文设置两个"父母".

core-data nspersistentstore

0
推荐指数
1
解决办法
1226
查看次数

使用10个最快的日期从核心数据中获取对象

我的CoreData数据库中有对象具有类型为NSDate的"date"属性.如何获取10个最快日期的对象?

这是我到目前为止:

NSFetchRequest *fetchRequest = [NSFetchRequest new];
fetchRequest.entity = [NSEntityDescription entityForName:NSStringFromClass([MyManagedObject class]) inManagedObjectContext:self.database.managedObjectContext];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSArray *result = [self.database.managedObjectContext executeFetchRequest: fetchRequest error: nil];
Run Code Online (Sandbox Code Playgroud)

我相信这会以排序的顺序返回给我所有的托管对象,但我真的只需要最新的10个.我怎样才能做到这一点?使用一个NSFetchRequest而不是将它们全部取出然后以编程方式对它们进行排序会更快吗?

core-data objective-c ios

0
推荐指数
1
解决办法
1344
查看次数