0

在 Obj-C 中,我试图将数组保存到NSUserDefaults我得到一个错误。我想这是因为数组是多维的,但是解决这个问题的最佳方法是什么?我应该将整个对象编码/解码为字符串,还是应该以某种方式调整对象?

以下是警告信息。我已经用“...”替换了一些匹配对象,以使帖子不会长 100 英里。

提前致谢!

*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
        {
        items =         (
                        {
                awayName = Celtic;
                awayScore = 0;
                channel = TV3Sport1;
                dateEnd = 1377018000;
                dateStart = 1377010500;
                description = "Playoff til Champions League, 1. kamp.";
                hash = 05ec41bd5cb91fe559349391c007994d;
                homeName = "Shakhter Karagandy";
                homeScore = 0;
                leagueTitle = "Champions League (kval)";
                matchProgress = "";
                matchStart = 1377010800;
                stream = "";
            },
                        {
                awayName = "Real Sociedad";
                awayScore = 0;
                channel = TV3Sport1;
                dateEnd = 1377031500;
                dateStart = 1377023400;
                description = "Playoff til Champions League, 1. kamp.";
                hash = be7a7e4763038c6991ba9f6cddfce871;
                homeName = Lyon;
                homeScore = 0;
                leagueTitle = "Champions League (kval)";
                matchProgress = "";
                matchStart = 1377024300;
                stream = "";
            }
        );
        unix = 1376949600;
    },
        {
        items =         (
                        {...);
        unix = 1377036000;
    },
        {
        items =         (...);
        unix = 1377122400;
    },
        {
        items =         (...);
        unix = 1377208800;
    },
        {
        items =         (...);
        unix = 1377295200;
    },
        {
        items =         (...);
        unix = 1377381600;
    },
        {
        items =         (...);
        unix = 1377468000;
    },
        {
        items =         (...);
        unix = 1377554400;
    }
)' of class '__NSCFArray'.  Note that dictionaries and arrays in property lists must also contain only property values.
4

2 回答 2

1

问题不在于数组是多维的(或必然是嵌套)。问题是完整的结构只能包含NSData, NSString, NSNumber, NSDate, NSArray, 或NSDictionary- 的实例,并且在某个地方你有某个其他类的实例。您需要删除该类或将其转换为允许的类型之一。

您可能还想考虑将如此大量的数据存储到用户默认值中是否真的是您想要做的......

于 2013-08-20T12:23:39.890 回答
1

您的模型看起来有点沉重和复杂。所以我建议你学习iOS中的数据持久性。在应用程序启动之间保存数据的选项很少:

  • NSUserDefaults
  • NSCoding
  • 核心数据
  • 存储在 plist 中

每种策略都有自己的优势,我不能给你灵丹妙药。这取决于您的型号。

于 2013-08-20T12:26:12.293 回答