0

私は Parse.com から NSDictionary のファイル表現を要求しています (そうです、辞書を格納するための他のより明白な方法があることは知っています)。その後、完了ブロックでデータがアーカイブ解除され、プロパティに割り当てられます。

このコードを実行すると、アーカイブ解除行から戻ることはないようです。エラーや例外はありません。すべてが正常であるかのように、アプリは引き続き実行されます。unarchiver の行とその次の行にブレーク ポイントを設定すると、最初のブレークポイントにはヒットしますが、2 番目のブレークポイントにはヒットしません。

関数がこのファイルの予想される量のデータを返したことを確認できます。

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");
    }
}];
4

1 に答える 1

0

データが plist として保存されていることが判明したため、plist のシリアル化を使用して抽出する必要がありました。

if (data) {
            NSError *error;
            NSPropertyListFormat format;
            NSDictionary* plist = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:&format error:&error];
            if(!plist){
                NSLog(@"Error: %@",error);
            }
于 2015-02-05T00:59:41.137 に答える