Ron*_*ear 18 iphone nskeyedarchiver nsarray gamekit
我想知道是否可以使用NSCoder方法:
- (void)encodeObject:(id)objv forKey:(NSString *)key
Run Code Online (Sandbox Code Playgroud)
编码NSArray或NSDictionary的实例.如果不是,你怎么去编码呢?我正在尝试使用NSKeyedArchived/NSKeyedUnarchiver使用GameKit在手机之间发送数据.我试过它,似乎无法检索我存储在我的数组中的字符串.我创建的数据包类与数据包类型整数一起出现,但不是数组中的数据.
提前致谢!
Cor*_*ger 32
如果数组或字典是您应该执行的根对象
NSData * encodedData = [NSKeyedArchiver archivedDataWithRootObject:someArray];
Run Code Online (Sandbox Code Playgroud)
要么
BOOL success = [NSKeyedArchiver archiveRootObject:someArray toFile:filePath];
Run Code Online (Sandbox Code Playgroud)
如果它是自定义类的实例变量,则该-encodeWithCoder:
方法应该这样做
[coder encodeObject:someArray forKey:@"someArray"];
Run Code Online (Sandbox Code Playgroud)
然后在-initWithCoder:
方法中
someArray = [[coder decodeObjectForKey:@"someArray"] retain];
Run Code Online (Sandbox Code Playgroud)
Ben*_*tto 10
NSKeyedArchiver/Unarchiver应该编码和解码NSArrays和NSDictionaries没有问题.如果您创建的数据包类实现了NSCoding协议,则需要在方法中显式调用(假设myNsArray是要编码的数据包对象中的实例变量的名称).但是归档者和NSArray应该照顾其余部分.如果您正在这样做,那么了解更多关于类的布局以及在编码/解码时谁在调用谁将会很有帮助.[encodeObject:
myNsArray
forKey:@"stringsArray"]
-encodeWithCoder:
归档时间: |
|
查看次数: |
28549 次 |
最近记录: |