2016-05-09 8 views
0

私はコアデータ保存ファイルの場所のリストからUIImagesを作成しようとしています。ここに私のコードは次のとおりです。ファイルパスからUIImageを作成できません

ontracFullScreenImageViewController *sectional = [viewControllerDictionary objectForKey:@"Sectional Appendices"]; 
     sectional.dataObject = self.dataObject.dataPack; 
     //sectional.imageArray = [[dataObject.sectionalDiagrams allObjects] mutableCopy]; 



     if ([dataObject.sectionalDiagrams count] != 0 || dataObject.sectionalDiagrams == nil){ 
     NSLog(@"dataObject.sectionalDiagrams %@", dataObject.sectionalDiagrams); 
      for (SectionalDiagram *section in dataObject.sectionalDiagrams) { 
       NSLog(@"section %@", section); 
       UIImage *image = [UIImage imageWithContentsOfFile:section.locationString]; 

       NSLog(@"image %@", image); 

       if(image != nil){ 
        [sectional.imageArray addObject:image]; 
        [sectional.imageLinks addObject:section.locationString]; 
       } 



      } 
      //[sectional loadScreen]; 

     } 
     else 
     { 
      [self removeMenuOptionForString:@"Sectional Appendices"]; 
     } 
     [TestFlight passCheckpoint:@"Loaded the Sectional Appendices"]; 

ログは、コアデータ要求に次のオブジェクトを示しています

with objects {(
<SectionalDiagram: 0x14fdde40> (entity: SectionalDiagram; id: 0x14fddb10 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/SectionalDiagram/p15> ; data: { 
dataObject = "0x14d29820 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/DataObject/p17>"; 
locationString = "/var/mobile/Containers/Data/Application/43B4BC10-58AA-45DE-9A3B-E90A3A08DC2D/Documents/[email protected]_A2rA2d_sectional_appendix_947735_2147483647_image.png"; 
}), 
<SectionalDiagram: 0x14fddbd0> (entity: SectionalDiagram; id: 0x14fddaf0 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/SectionalDiagram/p13> ; data: { 
dataObject = "0x14d29820 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/DataObject/p17>"; 
locationString = "/var/mobile/Containers/Data/Application/43B4BC10-58AA-45DE-9A3B-E90A3A08DC2D/Documents/[email protected]_NpH3Yg_sectional_appendix_947735_2147483647_image.png"; 
}), 
<SectionalDiagram: 0x14fdde10> (entity: SectionalDiagram; id: 0x14fddb00 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/SectionalDiagram/p14> ; data: { 
dataObject = "0x14d29820 <x-coredata://BC0EFCDC-FAA8-404D-A9DE-33AEE09AD1C6/DataObject/p17>"; 
locationString = "/var/mobile/Containers/Data/Application/43B4BC10-58AA-45DE-9A3B-E90A3A08DC2D/Documents/[email protected]_jGKgWx_sectional_appendix_947735_2147483647_image.png"; 
}) 

私がチェックしていると、画像のすべての3つは、デバイス上に存在するが、それはバックのように来続けますヌル。

+0

あなたのポストには、コアデータフォルトを示すものは何もありません。それはどこに来るのですか? –

+2

ファイルへの絶対パスは保存しないでください。ファイル名を保存するだけです。イメージを取得するには、ドキュメントディレクトリのパスをルックアップし、ファイル名を追加します。 – pbasdf

+0

@TomHarringtonあなたが正しいです!私は障害が関係情報をあまりにも早くログに記録しようとしていたことに気付きました。 – jampez77

答えて

2

問題は、特にアプリケーションを再構築するときに、ドキュメントディレクトリへのパスが変更される可能性があることです。したがって、ファイルへの完全なパスを保存しないでください。ファイル名を保存するだけです。イメージを取得するには、

[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] 

を使用して、ドキュメントディレクトリのパスを検索し、ファイル名を追加します。

関連する問題