【问题标题】:Save a fetchedObject NSArray to NSUserDefaults - app crashes at launch将 fetchedObject NSArray 保存到 NSUserDefaults - 应用程序在启动时崩溃
【发布时间】:2015-07-11 23:29:25
【问题描述】:

我正在为现有应用程序做一个今天的扩展小部件。该应用程序将图像保存到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 应用程序崩溃。我假设这是问题所在,因为如果我删除它,它工作正常。

【问题讨论】:

  • 另一个重要事实可能是崩溃的实际控制台输出以及它崩溃的行...
  • @nhgrif 该应用程序不会对崩溃采取行动。模拟器崩溃了,Xcode 没有记录任何东西。我什至等了一会儿,看看是否有什么变化,什么都没有
  • 重置模拟器的内容和设置再试一次?
  • @nhgrif 我已经完成了所有这些,甚至重新启动了 Xcode、计算机等......我在这里看到的是关于如何将 fetchRequest 数组保存到 NSUserDefaults 的建议

标签: ios objective-c core-data widget nsuserdefaults


【解决方案1】:

问题

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

修复 NSArray

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多