Просмотр исходного кода

Fix file browser not deserializing certain objects

Tanner Bennett лет назад: 7
Родитель
Сommit
efed18c386
1 измененных файлов с 16 добавлено и 4 удалено
  1. 16 4
      Classes/GlobalStateExplorers/FLEXFileBrowserTableViewController.m

+ 16 - 4
Classes/GlobalStateExplorers/FLEXFileBrowserTableViewController.m

@@ -222,13 +222,25 @@
         if ([pathExtension isEqualToString:@"json"]) {
             prettyString = [FLEXUtility prettyJSONStringFromData:fileData];
         } else {
+            // Regardless of file extension...
+            
+            id object = nil;
             @try {
                 // Try to decode an archived object regardless of file extension
-                id object = [NSKeyedUnarchiver unarchiveObjectWithData:fileData];
+                object = [NSKeyedUnarchiver unarchiveObjectWithData:fileData];
+            } @catch (NSException *e) { }
+            
+            // Try to decode other things instead
+            object = object
+                        ?: [NSPropertyListSerialization propertyListWithData:fileData
+                                                                     options:0
+                                                                      format:NULL
+                                                                       error:NULL]
+                        ?: [NSDictionary dictionaryWithContentsOfFile:fullPath]
+                        ?: [NSArray arrayWithContentsOfFile:fullPath];
+            
+            if (object) {
                 drillInViewController = [FLEXObjectExplorerFactory explorerViewControllerForObject:object];
-            } @catch (NSException *e) {
-                // Try to decode a property list instead, also regardless of file extension
-                prettyString = [[NSPropertyListSerialization propertyListWithData:fileData options:0 format:NULL error:NULL] description];
             }
         }