2014-01-31 4 views
0

Как сохранить данные из синтаксического анализа в NSArray в следующем формате. который используется для заполнения UITableView, который должен использоваться для строки поиска.Как сохранить данные из синтаксического анализа в NSArray iOS

_candyArray = [NSArray arrayWithObjects: 
        [Candy candyOfCategory:@"chocolate" name:@"chocolate bar" mName:@"test1"], 
        [Candy candyOfCategory:@"chocolate" name:@"chocolate chip" mName:@"test1"], 
        [Candy candyOfCategory:@"chocolate" name:@"dark chocolate" mName:@"test1"], 
        [Candy candyOfCategory:@"hard" name:@"lollipop" mName:@"test1"], 
        [Candy candyOfCategory:@"hard" name:@"candy cane" mName:@"test1"], 
        [Candy candyOfCategory:@"hard" name:@"jaw breaker" mName:@"test1"], 
        [Candy candyOfCategory:@"other" name:@"caramel" mName:@"test1"], 
        [Candy candyOfCategory:@"other" name:@"sour chew" mName:@"test1"], 
        [Candy candyOfCategory:@"other" name:@"peanut butter cup" mName:@"test1"], 
        [Candy candyOfCategory:@"other" name:@"gummi bear" mName:@"test1"], nil]; 

Я попытался код ниже, но идентификатор не загружать любые данные, продолжает возвращаться значение, как null, когда я запускаю его через NSLog

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName]; 
[query orderByAscending:@"Name"]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     { 
      self.arrayName = objects; 
     } 
    }else { 
     NSLog(@"Error, %@ %@",error,[error userInfo]); 
    } 
}]; 

NSLog(@"Array : %@", arrayName); 

Есть в любом случае, чтобы сохранить данные в выше тип массива?

+0

Был ли объект NSLog() 'NSArray *, чтобы убедиться, что вы действительно получаете нужные объекты? – MrBr

+0

попробуйте войти в блок 'findObjectsInBackgroundWithBlock:' – Akhilrajtr

+0

, он работал, пока он был в блоке, но он все еще не отображается в массиве выше – mugunthan

ответ

-1

Вы не выделили массив я так думаю изменить код следующим образом

PFQuery *query = [PFQuery queryWithClassName:self.parseClassName]; 
[query orderByAscending:@"Name"]; 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
if (!error) { 
    { 
     self.arrayName = [[NSArray alloc]initwithArray:objects]; 
    } 
}else { 
    NSLog(@"Error, %@ %@",error,[error userInfo]); 
} 
}]; 

NSLog(@"Array : %@", self.arrayName); 
+0

попробовал это, но он возвращается как «Массив: (null)» – mugunthan

0

Где ваши конфеты объекты приходят? Если это пользовательский класс, то, скорее всего, это не сохранение для синтаксического анализа.

Вот один из способов использования существующих данных, но, возможно, лучше создать подкласс PFObject. (Проверьте документы для этого)

NSMutableArray * candyObjects = [NSMutableArray alloc]init]; 

for (Candy * candy in _candyArray) { 
    PFObject * newCandy = [PFObject objectWithClassName:@"Candy"]; 
    newCandy[@"category"] = candy.category; // or however you store your candy object's properties 
    newCandy[@"name"] = candy.name; // I prefer lowercase names, I notice you're querying uppercase 
    newCandy[@"mName"] = candy.mName; 

    [candyObjects addObject:newCandy]; 
} 

[PFObject saveAll:candyObjects]; // should run in background, but for now just showing to save. 

Хорошо, следующий шаг их извлекает. (В основном пример rajjjjj ж/несколько изменений)

PFQuery *query = [PFQuery queryWithClassName:@"Candy"]; 
[query orderByAscending:@"name"]; // lowercase to match above 
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     NSLog(@"retrievedObjects:%@", objects); 

     // Now to get them back into an array like you wanted before 
     // again, perhaps you could skip this by subclassing your candy ob 

     for (PFObject * obbie in objects) { 
      // mutableArrayRef represents wherever you'd like your candies added. 
      // make sure it has memory allocated, and it has been initialized 
      [mutableArrayRef addObject:[Candy candyOfCategory:obbie[@"category"] name:obbie[@"name"] mName:obbie[@"mName"]]]; 
     } 

     // now continue in whatever way you please, all of your candy should be in mutableArrayRef 
     // if you're doing multiple searches, make sure you clear the array before adding 
     // otherwise you will stack the data and get undesired results 
    } 
    else { 
     NSLog(@"Error, %@ %@",error,[error userInfo]); 
    } 
}]; 

Затем, если вы хотите сохранить их обратно в массив, как ваш вопрос первоначально заявил

0

Причина, равна нулю, что

findObjectsInBackgroundWithBlock

не закончен, когда этот оператор журнала запущен. Если вы хотите обработать результаты (или зарегистрировать их), вам нужно поместить заявление журнала внутри блока, или вы можете использовать

findObjectsInBackgroundWithTarget:selector:

вместо этого, и есть код обработки в вашем методе обратного вызова.

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