【发布时间】:2012-01-11 11:00:33
【问题描述】:
我在 NSKeyedUnarchiver 中遇到了一个奇怪的行为。
我存档了一个数据,在这个例子中我只使用了一个字符串:
NSMutableData *myData = [ NSMutableData data ];
NSKeyedArchiver *archiver = [[ NSKeyedArchiver alloc ] initForWritingWithMutableData:myData ];
NSString *testString = [ NSString stringWithString:@"Hello World!" ];
[ archiver encodeObject:testString forKey:@"test" ];
[ archiver finishEncoding ];
然后我想取消归档它。如果我使用
NSKeyedUnarchiver *unarchiver = [ NSKeyedUnarchiver unarchiveObjectWithData:myData ];
NSString *result = [ unarchiver decodeObjectForKey:@"test" ];
我得到 nil 结果,但如果我使用:
NSKeyedUnarchiver *unarchiver = [[ NSKeyedUnarchiver alloc ] initForReadingWithData:myData ];
NSString *result = [ unarchiver decodeObjectForKey:@"test" ];
我拿回了我的字符串。现在我认为 [ NSKeyedUnarchiver unarchiveObjectWithData:myData ] 只是 [[ NSKeyedUnarchiver alloc ] initForReadingWithData:myData ] 的一种便捷方法,但它的行为似乎并非如此。我错了吗?
谢谢 雷扎
【问题讨论】:
标签: iphone ios macos nskeyedarchiver