Objective c 从阵列移动的对象未保存在核心数据中
我有一个显示视频的应用程序。下面的代码获取一个视频列表(使用核心数据),将其过滤为仅以前看过的视频,然后查找下一个视频并将其添加到视频列表中 基本上,我不是在显示每一个视频,而是在显示之前观看的视频+下一个应该观看的视频Objective c 从阵列移动的对象未保存在核心数据中,objective-c,ios,core-data,Objective C,Ios,Core Data,我有一个显示视频的应用程序。下面的代码获取一个视频列表(使用核心数据),将其过滤为仅以前看过的视频,然后查找下一个视频并将其添加到视频列表中 基本上,我不是在显示每一个视频,而是在显示之前观看的视频+下一个应该观看的视频 videos = [[loader loadVideos] mutableCopy]; // Get only the viewed videos NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(vie
videos = [[loader loadVideos] mutableCopy];
// Get only the viewed videos
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(viewed == YES)"];
NSMutableArray *viewedVideos = [[videos filteredArrayUsingPredicate:predicate] mutableCopy];
Video *lastWatchedVideo = [viewedVideos lastObject];
// The next video will be equal to the video order of the previous video (starting at 1 vs 0)
Video *todaysVideo = [videos objectAtIndex:[lastWatchedVideo.videoOrder intValue]];
[viewedVideos addObject:todaysVideo];
用户界面中的一切都正常工作,但对todaysVideo对象的任何更改(例如,将其标记为已查看)都不会保存回数据库。这是因为我将其移动到了另一个阵列吗?是的,这就是为什么您的更改没有保存到核心数据中。您正在创建核心数据的本地副本并对其进行修改。这不会反映在核心数据中。把你的代码改成这个,看看它是否有效
videos = [loader loadVideos];//You get the videos from core data
// Get only the viewed videos
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(viewed == YES)"];
NSMutableArray *viewedVideos = [videos filteredArrayUsingPredicate:predicate];
Video *lastWatchedVideo = [viewedVideos lastObject];
// The next video will be equal to the video order of the previous video (starting at 1 vs 0)
Video *todaysVideo = [videos objectAtIndex:[lastWatchedVideo.videoOrder intValue]];
todaysVideo.viewed=YES;
//Now that you have modified it save the context
NSError *error=nil;
[context save:&error];
谢谢你的回答。虽然在加载视频时可以对其进行更改,但稍后我需要修改视频。示例:稍后,这些视频对象将添加到UITableView。在didSelectRowAtIndexPath上,我将视频标记为已观看,然后保存。除了作为todaysVideo加载的视频外,这在所有视频上都有效。@NathanBarry我不明白为什么它不适用于todaysVideo,只要您有一个正确的引用。你能分享你试图设置今天视频的代码吗?也许是didSelectRowAtIndexPath?啊,谢谢你给我指出了正确的位置。在didSelectRowAtIndexPath中,我使用的是视频(我所有视频的列表),而不是显示视频(tableView中实际使用的数组)。谢谢