NSKeyedUnarchiver unarchiveObjectWithData:在 Parse 块函数中从不 returns
NSKeyedUnarchiver unarchiveObjectWithData: in Parse block function never returns
我正在从 Parse.com 请求 NSDictionary 的文件表示(是的,我知道还有其他更明显的方法来存储字典),然后在完成块中,数据被取消归档并分配给 属性。
当这段代码执行时,它似乎从未从未归档行中 return。没有任何冻结,没有错误或异常。该应用程序继续 运行,就好像一切都很好。如果我在 unarchiver 行和它之后的行设置断点,第一个断点被击中但第二个断点永远不会。
我可以确认该函数 return 编辑了该文件的预期数据量。
PFFile *definitionFile = appObject[@"myFile"]; //PFFile reference from a PFObject
[definitionFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
if (data) {
//A breakpoint on the following line does fire and show that there is data being given to the unarchiver
self.pendingDefinition = (NSDictionary *) [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
//////Nothing beyond this point gets executed////////
[self handleNewDefinition];
} else {
NSLog(@"ERROR");
}
}];
事实证明数据被存储为 plist,我需要使用 plist 序列化来提取它:
if (data) {
NSError *error;
NSPropertyListFormat format;
NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:&format error:&error];
if(!plist){
NSLog(@"Error: %@",error);
}
我正在从 Parse.com 请求 NSDictionary 的文件表示(是的,我知道还有其他更明显的方法来存储字典),然后在完成块中,数据被取消归档并分配给 属性。
当这段代码执行时,它似乎从未从未归档行中 return。没有任何冻结,没有错误或异常。该应用程序继续 运行,就好像一切都很好。如果我在 unarchiver 行和它之后的行设置断点,第一个断点被击中但第二个断点永远不会。
我可以确认该函数 return 编辑了该文件的预期数据量。
PFFile *definitionFile = appObject[@"myFile"]; //PFFile reference from a PFObject
[definitionFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
if (data) {
//A breakpoint on the following line does fire and show that there is data being given to the unarchiver
self.pendingDefinition = (NSDictionary *) [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
//////Nothing beyond this point gets executed////////
[self handleNewDefinition];
} else {
NSLog(@"ERROR");
}
}];
事实证明数据被存储为 plist,我需要使用 plist 序列化来提取它:
if (data) {
NSError *error;
NSPropertyListFormat format;
NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:&format error:&error];
if(!plist){
NSLog(@"Error: %@",error);
}