Как прочитать NSMutableArray из NSMutableDictionary - PullRequest
0 голосов
/ 01 сентября 2011

У меня проблемы с чтением изменяемого массива из изменяемого словаря.Я пытаюсь прочитать это, а затем положить на этикетку.Вот как организованы мои данные.У меня есть изменяемый массив словарей.Затем в своем табличном представлении я беру объект по пути индекса и устанавливаю его равным словарю в делегате приложения.Затем в подробном представлении я загружаю словарь, извлеченный из массива, и читаю из него и помещаю значения в метки.У меня все строки в словаре работают, но массивы не считываются, вы можете мне помочь

RootViewController.m

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    SurveyAppAppDelegate *surveyAppAppDelegate = (SurveyAppAppDelegate*)[[UIApplication sharedApplication] delegate];

    SurveyViewer *surveyViewController = [[SurveyViewer alloc] initWithNibName:@"SurveyViewer" bundle:nil]; 
    surveyAppAppDelegate.arrayCount = [[self surveyArray] objectAtIndex:indexPath.row];


    [self.navigationController pushViewController:surveyViewController animated:YES];
    [surveyViewController release];
}

В моем делегате приложения он установлен как NSDictionary.

Затем в моем детализированном контроллере я делаю это

  injuredArray = [surveyAppAppDelegate.arrayCount objectForKey:@"Injured Part"];

    if ([injuredArray count] >= 1) {
        for (int i = 0; i<=([injuredArray count]-1); i++) {
            myLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 105+shift, 139, 15)];
            myLabel.text = [injuredArray objectAtIndex:i];
            myLabel.backgroundColor = [UIColor clearColor];
            myLabel.font = [UIFont fontWithName:@"Helvetica" size: 14.0];
            myLabel.textColor = [UIColor blackColor];
            myLabel.textAlignment = UITextAlignmentLeft;
            [self.theScroller addSubview:myLabel];
            shift = shift+20;
        }
    }

В моем делегате приложения я настраиваю arrayCount следующим образом

.h

#import <UIKit/UIKit.h>

    @class RootViewController;

    @interface SurveyAppAppDelegate : NSObject <UIApplicationDelegate> {
        NSDictionary *arrayCount;
    }

    @property (nonatomic, assign) NSDictionary *arrayCount;

    @end

и .m

#import "SurveyAppAppDelegate.h"
@implementation SurveyAppAppDelegate
    @synthesize arrayCount;

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {


        arrayCount = [[NSDictionary alloc] init];

Затем, после освобождения делегата приложения, я освобождаю его

О, и все объекты в NSMutableArray, который я установил для injuredArray, являются строками

РЕДАКТИРОВАТЬ: Итак, я добавил цикл к NSLog массива в контроллере корневого представления сразу после того, как я его установил, и он не работает.По какой-то причине он выглядит неправильно сохраненным в arrayCount

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

В заголовке appDelegate попробуйте сохранить словарь вместо назначения:

@property (nonatomic, retain) NSDictionary *arrayCount;

, а затем в реализации:

NSDictionary *anArrayCount = [[NSDictionary alloc] init];
self.arrayCount = anArrayCount;
[anArrayCount release];

Является ли назначенный вами объект injuredArray уже выделенным и инициализированным?Это может быть проблемой ...

0 голосов
/ 01 сентября 2011

Вы можете подумать о создании метода init в контроллере подробного представления, который принимает интересующий вас NSDictionary и сохраняет его в свойстве.Я не могу сказать, откуда взялась эта ссылка: surveyAppAppDelegate.arrayCount

...