2010-08-18 2 views
0

как можно сохранить массив в нескольких местах, т.е. различные контроллеры представлений, чтобы сохранить данные в массивах и позволить им впоследствии использоваться таблицей? редактироватьсохранение массива

цель с я иметь IBAction с кодом

[[NSMutableArray alloc] init]; 
[favoritesArray addObject: @"one"]; 
//and in the fav table view this code// 
favoritesArray = [[NSMutableArray alloc]init]; 
didContain = [[NSMutableArray alloc]init]; 
if ([favoritesArray contains:@"one"]); 

{ [didContain addObject:@"trial"]; } 

однако его сбой на если часть ...

+2

Можем ли мы получить некоторый контекст здесь? – Borealid

+0

У меня проблемы с пониманием того, что вы пытаетесь сделать. что langauge? –

+0

Объект c У меня есть код с кодом [[NSMutableArray alloc] init]; [избранноеArray addObject: @ "one"]; и в виде таблицы fav этот кодfavoritesArray = [[NSMutableArray alloc] init]; didContain = [[NSMutableArray alloc] init]; если ([избранноеArray содержит: @ "one"]); { [didContain addObject: @ "trial"]; } однако его сбои в части if ... –

ответ

1
[[NSMutableArray alloc] init]; 
[favoritesArray addObject: @"one"]; 

Я предполагаю, что вы на самом деле есть «favoritesArray =» в исходном коде, и просто пропустили его при копировании. В противном случае вы бросаете массив на пол, а favoritesArray по-прежнему держится nil.

if ([favoritesArray contains:@"one"]); 

{ [didContain addObject:@"trial"]; } 

однако его сбой в части, если ...

Есть две проблемы с вашим if заявление:

  1. NSArray не отвечает на contains:, что и крушение говорит вам. Вам необходимо отправить свой массив сообщение, на которое он отвечает, например containsObject:, который указан в документации.
  2. Как я указал в форматировании, которое я применил к вашему коду, оператор if не относится к заявлению { [didContain addObject:@"trial"]; }, которое следует за ним.

    Это потому, что вы положили точку с запятой после состояния if. Оператор if не занимает точку с запятой между условием и оператором; оператор должен непосредственно следовать за условием (то есть сразу после )). Более того, точка с запятой сама по себе является допустимым, пустым оператором.

    Итак, у вас есть пустое заявление, при условии if (если массив содержит избранные @"one", ничего не делать), и у вас есть заявление, вы имели в виду, что под контроль if стоять на своем собственном, безусловном.

    Вырезать точку с запятой после if так, чтобы { … } привязывался к if вместо отдельного оператора.

+0

благодарит точку с запятой и содержитОбъект исправил это спасибо –

1

Alx, вы пытаетесь получить доступ к данным в favouritesArray из нескольких объектов? Это то, что я думаю, что вы пытаетесь сделать, но без дополнительного контекста трудно предложить решение. Вот один из возможных подходов:

Объявите favouritesArray как свойство в вашем классе контроллера. (Вы можете использовать @property и @synthesize для достижения этой цели.)

Тогда в ваших взглядах, добавить контроллер как IBOutlet (так называемый, скажем, myController). Затем выполните соединения в Interface Builder между вашим представлением и контроллером. Затем вы сможете получить доступ к массиву из ваших классов просмотра, написав:

[[myController favouritesArray] objectAtIndex:3], например.

В общем, это плохая идея «копировать» данные между различными объектами в вашей программе. Если для этого нет веских оснований, используйте вместо этого ссылки. Попытайтесь подумать, какой объект является «владельцем» для этого массива, и поместите его в этот класс.

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