Вопрос по json, ios – Передача данных из локального файла с использованием json

17

Error: User Rate Limit ExceededsetDataToJsonError: User Rate Limit ExceededviewDidLoadError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

@interface NSDictionary(JSONCategories)
+(NSDictionary*)dictionaryWithContentsOfJSONString:(NSString*)fileLocation;
@end

@implementation NSDictionary(JSONCategories)

+(NSDictionary*)dictionaryWithContentsOfJSONString:(NSString*)fileLocation{
    NSData* data = [NSData dataWithContentsOfFile:fileLocation];
    __autoreleasing NSError* error = nil;
    id result = [NSJSONSerialization JSONObjectWithData:data 
                                                options:kNilOptions error:&error];
    if (error != nil) return nil;
    return result;
}
@end

@implementation ViewController
@synthesize name;

- (void)viewDidLoad
{
    [super viewDidLoad];

}

-(void)setDataToJson{

    NSDictionary *infomation = [NSDictionary dictionaryWithContentsOfJSONString:@"Test.json"];
    name.text = [infomation objectForKey:@"AnimalName"];//does not pass data
}

Ваш Ответ

2   ответа
1

valueForKey вместо.

Пример:

name.text = [infomation valueForKey:@"AnimalName"];
40

как вы пытаетесь получить свой файл. Чтобы сделать это правильно, вы должны сначала найти его путь в комплекте. Попробуйте что-то вроде этого:

+(NSDictionary*)dictionaryWithContentsOfJSONString:(NSString*)fileLocation{
    NSString *filePath = [[NSBundle mainBundle] pathForResource:[fileLocation stringByDeletingPathExtension] ofType:[fileLocation pathExtension]];
    NSData* data = [NSData dataWithContentsOfFile:filePath];
    __autoreleasing NSError* error = nil;
    id result = [NSJSONSerialization JSONObjectWithData:data 
                                                options:kNilOptions error:&error];
    // Be careful here. You add this as a category to NSDictionary
    // but you get an id back, which means that result
    // might be an NSArray as well!
    if (error != nil) return nil;
    return result;
}

После того, как вы это сделаете, и когда ваш вид загрузится, вы сможете установить метки, получив json следующим образом:

-(void)setDataToJson{
    NSDictionary *infomation = [NSDictionary dictionaryWithContentsOfJSONString:@"Test.json"];
    self.name.text = [infomation objectForKey:@"AnimalName"];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setDataToJson];
}
Ах, конечно, это число, и мы должны сначала преобразовать его. Попробуй это:self.lat.text = [[[[information valueForKey:@"Location"] objectAtIndex:0] valueForKey:@"Latitude"] stringValue];
Тогда вы должны сделать что-то вроде этого:self.lat.text = [[[information valueForKey:@"Location"] objectAtIndex:0] valueForKey:@"Latitude"];
Ах, это работает отлично! Большое спасибо :) domshyra
хорошо, я попробовал это, и теперь это говорит-[__NSCFNumber isEqualToString:] вместо NSArray. хммм domshyra
Изменил бы я свою функцию nsdictionary, если бы хотел получить информацию из массива данных в файле Jsonself.lat.text = [[infomation valueForKey:@"Location"] valueForKey:@"Latitude"]; это то, что у меня есть, и это то, как выглядит JSON"Location": [ { "Longitude": 0, "Latitude": 0 } ], и когда я запускаю это говорит-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance domshyra

Похожие вопросы