代码之家  ›  专栏  ›  技术社区  ›  Jonathan.

保存自定义对象数组的nsDictionary

  •  1
  • Jonathan.  · 技术社区  · 14 年前

    我有一本字典(如果有区别的话它是可变的),它包含nsarray,而nsarray又包含(nsobject的子类)s 我已经实现了initwithcoder和encodewithcoder,如下所示:

    -(id)initWithCoder:(NSCoder *)aDecoder {
        self = [super init];
        self.Title = [aDecoder decodeObjectForKey:@"Title"];
        self.SiteAPIURL = [aDecoder decodeObjectForKey:@"SiteAPIURL"];
        self.ID = [aDecoder decodeObjectForKey:@"ID"];
        return self;
    }
    
    -(void) encodeWithCoder:(NSCoder *)aCoder {
        [aCoder encodeObject:self.Title forKey:@"Title"];
        [aCoder encodeObject:self.SiteAPIURL forKey:@"SiteAPIURL"];
        [aCoder encodeObject:self.ID forKey:@"ID"];
    }
    

    但是当我这样做的时候,它不能正常保存 [dictionary writeToFile:savepath atomically:YES]; 那么我做错了什么,序列化到底是什么,我需要使用nskeyedarchiver还是其他什么?

    2 回复  |  直到 14 年前
        1
  •  2
  •   user23743    14 年前

    [NSDictionary writeToFile: atomically:] 使用 NSPropertyListSerialization 只能记录基本对象(数字、字符串、日期和数据)的子集。所以当你可以使用 NSCoding 随着 NSKeyedArchiver 要存档对象,另一个选项是将对象封送到字符串或数据表示形式中,存储 那个 在属性列表中,并在加载时再次取消标记。

        2
  •  0
  •   Pete Rossi    14 年前

    是的,您想使用nskeyedarchiver

    您需要的所有信息都可以在这里找到:

    http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/Archiving/Archiving.html