2016-05-06 2 views
0

Это обычное упражнение. Я делал это несколько раз в моем текущем проекте, и он отлично работал. Я скопировал строку кода для строки, те же инициализации. Мои данные plist входят в словарь, но затем он не переходит в свои соответствующие массивы при их инициализации. У меня есть метод, называемый initArraysPlistiOS - извлечение данных из plist не работает

-(void)initArraysPlist{ 
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"trainerProfile" ofType:@"plist"]; 
// Load the file content and read the data into arrays 
NSDictionary *dict1 = [[NSDictionary alloc] initWithContentsOfFile:path1]; 

trainerNames = [dict1 objectForKey:@"Names"]; 
trainerIcons = [dict1 objectForKey:@"Icons"]; 
trainerFactSheet= [dict1 objectForKey:@"Fact Sheet"]; 
trainerFocus = [dict1 objectForKey:@"Focus"]; 
trainerContactInfo= [dict1 objectForKey:@"Contact Info"]; 

}

Ive сделали это несколько раз, и он в настоящее время работает в моем коде. все значения верны. Я проверил его много раз. когда

ответ

0

Пожалуйста, попробуйте этот код может быть полезным для вас

// Read plist from bundle and get Root Dictionary out of it 

NSDictionary *dictRoot = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]]; 

// Your dictionary contains an array of dictionary 
// Now pull an Array out of it. 

NSArray *arrayList = [NSArray arrayWithArray:[dictRoot objectForKey:@"catlist"]]; 

// Now a loop through Array to fetch single Item from catList which is Dictionary 

[arrayList enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop) { 

    // Fetch Single Item 
    // Here obj will return a dictionary 

    NSLog(@"Category name : %@",[obj valueForKey:@"category_name"]); 
    NSLog(@"Category id : %@",[obj valueForKey:@"cid"]); 
}]; 
0

Пожалуйста, прочтите комментарии к каждой строке.

NSString *path1 = [[NSBundle mainBundle] pathForResource:@"trainerProfile" ofType:@"plist"]; // **check if your plist is actually added in Bundle.If its there move to second line , if not then add plist in bundle.** 

    NSDictionary *dict1 = [[NSDictionary alloc] initWithContentsOfFile:path1];// **if plist is added in bundle , then check if you are getting value for dict1 . If no then you might be making some mistake in plist structure.** 

Для получения более подробных разъяснений, пожалуйста, разместите ваш plist, если это возможно.

Смежные вопросы