【问题标题】:Can I have 2 arrays within a plist?我可以在 plist 中有 2 个数组吗?
【发布时间】:2011-04-23 03:22:47
【问题描述】:

我正在尝试为我正在构建的 iphone 应用程序保存数据。我的数据结构是保存一个包含单个 gameArray 的 gamesArray。在每个 gameArray 中,我都有一个日期、姓名、主场/客场和一个 shotArray。 shotArray 包含镜头。加载时的镜头创建 UIButtons 以显示在屏幕上。 shotButtonArray 包含这些按钮。当我在 plist 编辑器中查看我的文件时,我看不到不同的数组。我只看到 1 个数组,并且所有创建的对象都刚刚列出。为什么它只显示一个数组。这是我保存数据的方式

for (UIButton *button in shotButtonArray) {

        assert([button isKindOfClass:[UIButton class]]);
        [button removeFromSuperview];
    }
    for (Shot *shot in shotArray) {
        [shot subtract_miss_And_make];
    }
    [self reDrawShots];
    [shotButtonArray removeAllObjects];
    [shotArray removeAllObjects];
    [gameArray removeAllObjects];
    [gameArray addObject:theDate];
    [gameArray addObject:theName];
    NSNumber *theNumber = [NSNumber numberWithInt:homeAway];
    [gameArray addObject:theNumber];
    [gameArray addObject:shotArray];
    gameNumber = 0;
    [gamesArray addObject:gameArray];
    NSString *path = [self findGamesPath];
    [NSKeyedArchiver archiveRootObject:gamesArray toFile:path];

我是否错误地保存了我的数据。为什么只显示一个数组。

【问题讨论】:

    标签: iphone xcode nsmutablearray plist saving-data


    【解决方案1】:

    您保存它的方式在技术上没有任何问题。我很困惑;为什么要在将 shotArray 保存到 gameArray 之前从 shotArray 中删除所有对象?还有,为什么你在 gamesArray 中只存储一个 gameArray?

    即使您保存它的方式没有任何问题,我也会建议一种更好的方法来做到这一点。您应该创建一个代表“游戏”的新类。这可以使用键和值保存您想要的属性,例如日期、名称、数字等。如果您在该类中覆盖 -(void)encodeWithCoder:(NSCoder*)coder 函数,您可以调用:

    [coder encodeObject:theData forKey:@"DATE"];
    [coder encodeInteger:theNumber forKey:@"NUMBER"];
    

    然后,当您覆盖 - (void)encodeWithCoder:(NSCoder *)encoder 时,您可以访问正在调用的值:

    theDate = [[coder decodeObjectForKey:@"DATE"] retain];
    theNumber = [coder decodeObjectForKey:@"NUMBER"];
    

    这样,您只需创建这些对象的数组,请求 NSKeyedArchiver 将数组归档为其根对象,一切都将在“游戏”类中干净地处理。如果您想存储其他更复杂的值,您可以创建其他类并使用 encodeObject 和 decodeObject 函数。

    您可以在这里查看更多信息: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSCoding_Protocol/Reference/Reference.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多