2015-11-08 31 views
0

最近數據時,解析SDK更新後,在啓動時加載文件時,我開始得到以下異常:PFFile毀人從緩存中

2015-11-08 13:23:15.088 MyApp[7219:471946] [Error]: Caught "NSInvalidArgumentException" with reason "*** -[_NSPlaceholderData initWithContentsOfFile:options:error:]: nil file argument": 
(
0 CoreFoundation      0x0000000110a07f45 __exceptionPreprocess + 165 
1 libobjc.A.dylib      0x000000011047edeb objc_exception_throw + 48 
2 CoreFoundation      0x0000000110a07e7d +[NSException raise:format:] + 205 
3 Foundation       0x000000011002cd48 -[NSData(NSData) initWithContentsOfFile:options:error:] + 95 
4 Foundation       0x00000001100c5fcc +[NSData(NSData) dataWithContentsOfFile:options:error:] + 61 
5 MyApp        0x000000010e828426 -[PFFile _cachedData] + 94 
6 MyApp        0x000000010e886cac __62-[BFTask continueWithExecutor:successBlock:cancellationToken:]_block_invoke + 83 
7 MyApp        0x000000010e88658c __55-[BFTask continueWithExecutor:block:cancellationToken:]_block_invoke_2 + 82 
8 MyApp        0x000000010e8874ab __29+[BFExecutor defaultExecutor]_block_invoke_2 + 358 
9 MyApp        0x000000010e887a15 -[BFExecutor execute:] + 65 
10 MyApp        0x000000010e886510 __55-[BFTask continueWithExecutor:block:cancellationToken:]_block_invoke + 138 
11 MyApp        0x000000010e886110 -[BFTask runContinuations] + 396 
12 MyApp        0x000000010e8859c6 -[BFTask trySetResult:] + 151 
13 MyApp        0x000000010e883c4c -[BFTaskCompletionSource trySetResult:] + 79 
14 MyApp        0x000000010e7e48b3 __28-[PFAsyncTaskQueue enqueue:]_block_invoke_2 + 198 
15 MyApp        0x000000010e88658c __55-[BFTask continueWithExecutor:block:cancellationToken:]_block_invoke_2 + 82 
16 libdispatch.dylib     0x00000001145fce5d _dispatch_call_block_and_release + 12 
17 libdispatch.dylib     0x000000011461d49b _dispatch_client_callout + 8 
18 libdispatch.dylib     0x0000000114605bef _dispatch_root_queue_drain + 1829 
19 libdispatch.dylib     0x00000001146054c5 _dispatch_worker_thread3 + 111 
20 libsystem_pthread.dylib    0x000000011494ea9d _pthread_wqthread + 729 
21 libsystem_pthread.dylib    0x000000011494c3dd start_wqthread + 13 
). 

任何想法,爲什麼PFFile崩潰?這是否意味着本地緩存與以前的版本不兼容,並且當用戶更新應用程序時,我會遇到大問題?

回答

0

問題是我正在創建一個新的PFFile,將它分配給某個對象的列本地而不是將它保存回Parse。當一個新文件被創建時,它的url屬性是nil,應該沒問題,因爲它還沒有在線。之後,我正在獲取父對象誰是孩子是該文件 - 這最終搞亂了事情,因爲然後我關閉了應用程序,下次打開時,我試圖獲取PFFile的數據,url屬性等於nil。這導致上述例外。從解析由一個人提出了一個解決辦法:

PFFile *file = object[fileKey]; 
if ((file != nil) && [file isKindOfClass:[PFFile class]] && (file.url == nil)) { 
    [object revertObjectForKey:fileKey]; 
} 

之後獲取該對象將帶來從解析服務器正確的數據。