簡體   English   中英

在捆綁資源iOS離子目標C中打印時,Json文件為null

[英]Json file is null when prints in bundle resource ios ionic objective c

我正在xcode運行ionic項目的ios構建app.xcproj 我正在以下位置從服務器下載json文件: /var/mobile/Containers/Data/Application/63E66EE9-9A1B-4D4D-AEF6-F8C54D159ED0/Library/NoCloud/MyApp/Timing/DTS.json ,我已經檢查了通過打印文件:

NSURL *urlDTS = [NSURL fileURLWithPath: DTS_Path];
NSString *fileContentDTS = [NSString stringWithContentsOfURL:urlDTS encoding:NSUTF8StringEncoding error:nil];
NSLog(@"Json data is here of DTS  %@", fileContentDTS);

這樣就可以打印整個文件,之后,當我獲取進一步操作的資源路徑時,它顯示為null

NSString *filePathDTS = [[NSBundle mainBundle] pathForResource:getParameterDTSValueName ofType:@"json"];
NSLog(@"This is the dts path %@", filePathDTS);

即使我已經將文件位置檢索為/var/mobile/Containers/Data/Application/63E66EE9-9A1B-4D4D-AEF6-F8C54D159ED0/Documents/DTS.json

通過以下鏈接

NSString *documentdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *tileDirectory = [documentdir stringByAppendingPathComponent:@"xxxx/DTS"];
NSLog(@"Tile Directory: %@", tileDirectory);

更新資料

這是文件包含的內容:[{“ value”:0}]

NSURL *libraryDirURL = [[NSFileManager.defaultManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *urlDTSK = [libraryDirURL URLByAppendingPathComponent:@"NoCloud/MyApp/MyFolder/DTS.json"];
NSString *filePathDTS = [NSString stringWithContentsOfURL:urlDTSK encoding:NSUTF8StringEncoding error:nil];
NSLog(@"This is Dts PATH %@", filePathDTS);
NSData *dataDTS = [NSData dataWithContentsOfFile:filePathDTS];
NSLog(@"here is DTS data  %@", dataDTS); //this shows null
NSDictionary *jsonDTS = [NSJSONSerialization JSONObjectWithData:dataDTS options:kNilOptions error:nil];
NSLog(@"here is jason DTS %@", jsonDTS);
NSMutableArray *DTSvalue = [jsonDTS valueForKeyPath: @"Value"];
DTSValueIs = DTSvalue[0];
NSLog(@"here is DTS Value first%@", DTSvalue[0]);
NSLog(@"here is DTS value is%@", DTSValueIs);

這表明This is Dts contents [{"value":0}] 2018-06-11 17:04:40.940006+0500 Muslims 365[3356:819935] here is DTS data (null)

請指導我如何通過在主捆綁包中提供資源來從json文件中檢索數據??? 因為它顯示為null。

pathForResource是在應用程序包中獲取路徑的正確方法。 請注意,此位置為READONLY。 您無法下載文件並將其保存在此處。 pathForResource僅訪問您在編譯過程中擁有的文件,並且返回nil-這意味着未找到文件。 當您構建項目時,它會產生一個“捆綁包”-一個名為“ MyApp.app”的文件夾。 在Xcode中,您可以在左側的“產品”組中看到它,也可以右鍵單擊並在Finder中打開它,然后右鍵單擊-顯示內容-查看其中的內容。 這樣,您可以可視化主捆綁包的結構。 如果文件在該目錄下的子目錄中,則需要使用pathForResource:ofType:inDirectory:。

容器內的“庫”文件夾是存儲運行時數據的好地方。 例如,您下載的文件。 該位置是可寫的,並且在您首次啟動應用程序時為空。 如果捆綁軟件中有需要修改的文件,則可以將其從捆綁軟件復制到“庫”中。 請注意,如果您下載了一些文件,以后可以再次重新下載,則最好使用“緩存”(“庫”的子文件夾)。 如果您來自Windows世界,則“庫”的概念類似於“ AppData”。

“文檔”是一個位置,用於存放用戶可見的文件,並且可以由用戶編輯或管理。 它也是可寫的。 您可以將其視為macOS上的“文檔”,或Windows上的“我的文檔”,但僅適用於特定應用程序。

如果您的文件位於“庫”中,則稍后可以獲取庫的路徑並將文件加載為字符串,如下所示:

NSURL *libraryDirURL = [[NSFileManager.defaultManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *urlDTS = [libraryDirURL URLByAppendingPathComponent:@"NoCloud/MyApp/MyFolder/DTS.json"];
NSString *fileContentDTS = [NSString stringWithContentsOfURL:urlDTS encoding:NSUTF8StringEncoding error:nil];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM