【发布时间】:2013-06-23 18:23:48
【问题描述】:
我正在尝试为我的一门课程实施协议<NSCoding>。
我在对此类的一个属性进行序列化\反序列化时遇到了一个问题。属性类型:NSLocale。
这是我为了解NSLocale 的行为而编写的(猕猴桃)测试:
NSLocale *locale = [NSLocale currentLocale];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:locale];
NSLocale *locale2 = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"1) %@", [locale localeIdentifier]); //=> "en_US"
NSLog(@"2) %@", [locale2 localeIdentifier]); //=> "en_US"
[[locale should] equal:locale2]; //=>fail
[[[NSLocale currentLocale] should] equal:[NSLocale currentLocale]]; //=> pass
测试失败。你们知道为什么吗?
【问题讨论】:
-
我认为
should equal与==的指针级别等价。您怎么能期望来自不同来源的两个对象具有相同的地址? -
对不起,
should和equal:方法是什么? -
我猜他们来自 Kiwi 框架
-
@CodaFi 是什么让你这么认为?我认为
equal在对象上调用isEqual,而beIdenticalTo比较指针 -
是的。我确实使用了 kiwi,我认为 equal 调用 [object isEqual:object2]。我会验证并编辑问题
标签: ios objective-c foundation kiwi