将 fetchedObject NSArray 保存到 NSUserDefaults - 应用程序在启动时崩溃

Save a fetchedObject NSArray to NSUserDefaults - app crashes at launch

我正在为现有应用程序制作今天的扩展小部件。该应用程序保存到 Core Data 一张图片。

这是提取请求:

- (NSArray *)pictures {
    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Images"];
    NSArray *fetchedObjects = [[Stack sharedInstance].managedObjectContext executeFetchRequest:fetchRequest error:nil];

    [self saveToWidget]; // Method to save NSArray pictures to NSUserDefaults.

    return fetchedObjects;
}

这是将 NSArray 保存到 NSUserDefaults 的方法:

- (void)saveToWidget {
    NSUserDefaults *userDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.AppJester.PicPocket"];

    //save the MutableArray to NSUserdefaults
    [userDefaults setObject:self.pictures forKey:@"image"];
    [userDefaults synchronize];
}

重要事实

每次用户拍照并将其保存到应用程序时,它会自动保存到核心数据中,为了在主屏幕(UICollectionView)上显示,我从 中提取所有图片图片 数组.

NSUserDefaults 应该将图像保存到数组中,以便在 Widget Target 检索并显示 Today Extension。

如果我将 [self saveToWidget] 方法添加到 fetchRequest,应用程序就会崩溃。我假设这就是问题所在,因为如果我删除它,它就可以正常工作。

问题

Xcode 没有反应,因为我 运行 应用程序后整个计算机会冻结。

修复 NSArray

我的获取请求带来了自定义对象,而 NSUserDefaults 不支持自定义对象。所以我将 NSArray 转换为 NSData。