gpt4 book ai didi

objective-c - 从数组中移动的对象未保存在核心数据中

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:47 27 4
gpt4 key购买 nike

我有一个显示视频的应用程序。下面的代码获取视频列表(使用核心数据),将其过滤为仅之前观看过的视频,然后找到下一个视频并将其添加到视频列表中。

基本上,我不会显示每个视频,而是只显示之前观看过的视频 + 您接下来应该观看的视频。

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 对象的任何更改(例如,将其标记为已查看)未保存回数据库外,UI 中的一切都按预期工作。这是因为我把它移到另一个数组了吗?

最佳答案

是的,这就是为什么您的更改没有保存到核心数据中的原因。您正在创建核心数据的本地副本并对其进行修改。这不会反射(reflect)在核心数据中。将您的代码更改为此,看看它是否有效

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];

关于objective-c - 从数组中移动的对象未保存在核心数据中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9043742/

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