gpt4 book ai didi

iphone - 将多个上下文与核心数据一起使用时出现错误 133000

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:52 24 4
gpt4 key购买 nike

我花了几天时间尝试我能想到的所有可能的解决方案,但似乎没有任何效果。

我像这样运行一个后台线程:

[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {

Media *localMedia = [media inContext:localContext];

UIImage *image = localMedia.thumbnail;


dispatch_async(dispatch_get_main_queue(), ^{

[thumbnails setObject:image forKey:[NSNumber numberWithInt:i]];
[contentDict setObject:thumbnails forKey:@"MediaItems"];
[cell.entryView setNeedsDisplay];
});

}];

或者像这样:

dispatch_queue_t cellSetupQueue = dispatch_queue_create("com.Journalized.SetupTimelineThumbnails", NULL);
dispatch_async(cellSetupQueue, ^{

NSManagedObjectContext *newMoc = [[NSManagedObjectContext alloc] init];
NSPersistentStoreCoordinator *coordinator = [NSManagedObjectContext contextForCurrentThread].persistentStoreCoordinator;
[newMoc setPersistentStoreCoordinator:coordinator];

NSNotificationCenter *notify = [NSNotificationCenter defaultCenter];
[notify addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:newMoc];

Media *localMedia = [media inContext:[NSManagedObjectContext contextForCurrentThread];

UIImage *image = localMedia.thumbnail;


dispatch_async(dispatch_get_main_queue(), ^{

[thumbnails setObject:image forKey:[NSNumber numberWithInt:i]];
[contentDict setObject:thumbnails forKey:@"MediaItems"];
[cell.entryView setNeedsDisplay];
});

}];

这两个都让我崩溃,UIImage 返回为 nil 对象,以及 Cocoa Error 133000

我已经删除了所有其他的后台线程代码,并在此之前直接保存在主线程上,以确保万无一失。在主线程上运行上面的代码也可以,但会卡住我的 UI。尽管做出了所有这些努力,上述代码每次都会崩溃。

我不确定该怎么做才能完成这项工作。

编辑:

我的具体问题是,如何在不崩溃的情况下完成这项工作? 1 个上下文中的对象在另一个上下文中不存在,这似乎是一个问题,但我如何让它们存在于另一个上下文中?

最佳答案

请记住,MR_inContext: 方法在幕后使用 [NSManagedObjectContext objectWithID: ] 方法。您应该在那里查看以确保您的对象具有:

1) 在进入第一个代码块中的后台上下文/ block 之前已保存2) 这个方法返回一些有用的东西

我也不确定您是如何设置缩略图属性的。理想情况下,只要您编写了 NSTransformable 代码就没关系(互联网上有示例向您展示如何使用 transformable 属性在核心数据中保存 UIImage)

此外,您的代码应如下所示:

UIImage *image = nil;
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {

Media *localMedia = [media inContext:localContext]; //remember, this looks up an existing object. If your context is a child of a parent context that has contains this, the localContext should refresh the object from the parent.

//image processing/etc

image = localMedia.thumbnail;

} completion:^{

[thumbnails setObject:image forKey:@(i)]; //new literals are teh awesome
contentInfo[@"MediaItems"] = thumbnails; //as is the new indexer syntax (on the latest compiler)

[cell.entryView setNeedsDisplay];

}];

关于iphone - 将多个上下文与核心数据一起使用时出现错误 133000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com