我正在尝试使用此代码提取JSON
资源中存在的xcode
文件
-(void)readJsonFiles
{
NSString *str=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"classes.json"];
NSLog(@"Path: %@", str);
NSData *fileData = [NSData dataWithContentsOfFile:str];
NSLog(@"Data: %@", fileData);
SBJsonParser *parser = [[SBJsonParser alloc] init] ;
NSDictionary *jsonObject = [parser objectWithData:fileData];
NSLog(@"%@", jsonObject);
}
路径返回文件路径的这个链接
/Users/astutesol/Library/Application Support/iPhone Simulator/6.0/Applications/A4E1145C-500C-4570-AF31-9E614FDEADE4/The Gym Factory.app/classes.json
但是当我记录fileData
时,它会返回null
。我不知道我在哪里做错了。
答案 0 :(得分:25)
使用pathForResource:ofType:
,而不是追加路径,所以
NSString *str=[[NSBundle mainBundle] pathForResource:@"classes" ofType:@"json"];
NSData *fileData = [NSData dataWithContentsOfFile:str];
答案 1 :(得分:4)
由于某种原因,它无法读取您的文件。使用-dataWithContentsOfFile:options:error:找出原因。
NSError* error = nil;
NSData *fileData = [NSData dataWithContentsOfFile:str options: 0 error: &error];
if (fileData == nil)
{
NSLog(@"Failed to read file, error %@", error);
}
else
{
// parse the JSON etc
}
答案 2 :(得分:4)
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"MyFile" ofType:@"txt"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
答案 3 :(得分:2)
有Swift 3的解决方案:
//create a fil's path, decompose name and extension
let path = Bundle.main.path(forResource: "anim-gif-1", ofType: "gif")
//get the data asociated to this file
let file = NSData(contentsOfFile: path!)
答案 4 :(得分:0)
您需要将pathforResource与resourcetype一起使用,并检查文件中是否有数据。
那不应该是零。
答案 5 :(得分:-1)
您可以按照此操作从文档目录中获取NSData
NSString *stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"YOUR_FOLDER_NAME"];
stringPath = [stringPath stringByAppendingPathComponent:@"JSON_FILE_NAME.json"];
NSLog(@"stringpath %@",stringPath);
NSData *fileData = [NSData dataWithContentsOfFile:stringPath];
希望这对你有用。