我想知道是否可以使用NSCoder方法:
- (void)encodeObject:(id)objv forKey:(NSString *)key对NSArray或NSDictionary的实例进行编码。如果没有,你该如何对它们进行编码呢?我正在尝试使用NSKeyedArchived / NSKeyedUnarchiver在使用GameKit的手机之间发送数据。我尝试过,但似乎无法检索我存储在数组中的字符串。我创建的数据包类与数据包类型整型一起出现,但看起来并不是数组中的数据。
提前感谢!
发布于 2010-02-09 10:43:50
NSKeyedArchiver/Unarchiver应该可以毫无问题地对NSArrays和NSDictionaries进行编码和解码。如果您创建的数据包类实现了NSCoding协议,则需要在-encodeWithCoder:方法中显式调用[encodeObject:myNsArrayforKey:@"stringsArray"] (假设myNsArray是您要编码的数据包对象中的实例变量的名称)。但是,归档程序和NSArray应该会处理剩下的部分。如果您正在这样做,那么了解更多关于您的类的布局以及在编码/解码时谁在呼叫谁将会很有帮助。
发布于 2010-02-09 10:53:30
如果数组或字典是根对象,则应执行以下操作
NSData * encodedData = [NSKeyedArchiver archivedDataWithRootObject:someArray];或
BOOL success = [NSKeyedArchiver archiveRootObject:someArray toFile:filePath];如果它是自定义类的实例变量,则在-encodeWithCoder:方法中应执行以下操作
[coder encodeObject:someArray forKey:@"someArray"];然后在-initWithCoder:方法中
someArray = [[coder decodeObjectForKey:@"someArray"] retain];发布于 2010-02-09 10:53:59
您在数组中存储的是什么类型的对象?确保数组中存储的所有对象都实现NSCoding协议。
https://stackoverflow.com/questions/2226390
复制相似问题