将 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。
我正在为现有应用程序制作今天的扩展小部件。该应用程序保存到 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。