2012-08-05 6 views
-2

Итак, у меня есть класс, который на данный момент содержит только простой объект NSMutableArray. Я устанавливаю этот объект из контроллера вида, но по какой-то причине ... глупая вещь не работает на моем ipad. Однако он работает безупречно на симуляторе.Объект NSMutableArray работает на симуляторе, но не на устройстве

Неужели кто-нибудь сталкивался с этим сценарием?

Я знаю, что это не так много, но все советы/указатели на то, где искать, даже будут полезны. Не знаю, что искать на этом.

Благодаря


ViewController.h

#import "DBEntries.h" 
DBEntries *dbEntries; 

ViewController.m:

[database open]; 

NSMutableArray *arrayAdder = [[NSMutableArray alloc] init]; 

NSString *filterNameFirst = [NSString stringWithFormat:@"%@", nameFirstTextField.text]; 
NSString *filterNameLast = [NSString stringWithFormat:@"%@", nameLastTextField.text]; 

NSString *filterStringFirst = [NSString stringWithFormat:@"%%%@%%", filterNameFirst]; // Works on first name only. 
NSString *filterStringLast = [NSString stringWithFormat:@"%%%@%%", filterNameLast]; // Works on last name only. 

FMResultSet *results = [database executeQuery:[NSString stringWithFormat:@"SELECT * FROM users WHERE firstname LIKE ? AND lastname LIKE ?", filterStringFirst, filterStringLast]]; 

while([results next]) 
{ 
    NSString *firstname = [results stringForColumn:@"firstname"]; 
    NSString *lastname = [results stringForColumn:@"lastname"]; 

    // Add db entries to array in DBEntries. 
    NSString *objectAdder = [NSString stringWithFormat:@"%@ %@", firstname, lastname]; 
    NSLog(@"objectAdder: %@", objectAdder); 
    [arrayAdder addObject:objectAdder]; 
} 

[dbEntries setUsersFiltered:arrayAdder]; 
[arrayAdder release]; 

[database close]; 

isUpdatingEntriesForTableView = YES; 

[dbTableView reloadData]; 

NSLog(@"dbEntries.usersFiltered: %@", dbEntries.usersFiltered); // This logs 0 on device, but works on simulator. 

class.h:

NSMutableArray *usersFiltered; 
@property (strong, nonatomic) NSMutableArray *usersFiltered; 

class.m:

@synthesize usersFiltered; 
+6

Пожалуйста, разместите соответствующий код, чтобы мы могли определить, что может произойти неправильно. –

+0

Как вы сами сказали, здесь нет ничего, кто мог бы помочь вам без кода и ошибки, которую вы видите. –

+0

Концепция - это то, о чем я говорил ... но хорошо, я обновил основной пост с помощью некоторого кода. Ошибок нет. Он просто не обновляет массив. Таким образом, userFiltered array возвращает 0. Это действительно базовая настройка, мне было просто любопытно, если кто-то столкнулся с чем-то похожим, где переменные класса не будут установлены на устройстве, но WILL на симуляторе. – crewshin

ответ

0

Wow. Хорошо, поэтому ответ был связан с точкой @omz. Я использовал [NSString stringWithFormat, когда я не должен был быть. Удаление этого, так что теперь FMResultSet *results = [database executeQuery:@"SELECT * FROM users WHERE firstname LIKE ? AND lastname LIKE ?", filterStringFirst, filterStringLast]; не запускает предупреждение и не работает на устройстве. Забавно, что он работал только на симуляторе, но не на устройстве.

+0

Спасибо всем за вашу помощь! Мне нравится это место. – crewshin

1

Я не использую сильный для автоматического подсчета памяти я просто не нравится. Вы пробовали

@property (retain, nonatomic) NSMutableArray *usersFiltered; 

и вы можете заменить следующие строки:

[dbEntries setUsersFiltered:arrayAdder]; 
[arrayAdder release]; 

с:

dbEntries.usersFiltered = [arrayAdder autorelease]; 
//[arrayAdder release]; 
+0

Не работает. Спасибо за попытку помочь. Я ценю это. – crewshin

+0

Btw, какова логика вашего комментария? Согласно руководству по переходу ARC ... сильный - это новый одобренный способ. Насколько мне известно. – crewshin

+0

Я просто отчасти старая школа: p – OnlyAngel

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