-2

したがって、この時点では単純な NSMutableArray オブジェクトのみを含むクラスがあります。ビューコントローラーからこのオブジェクトを設定していますが、何らかの理由で...私のiPadではばかげたことが機能しません。ただし、シミュレーターでは問題なく動作します。

誰かがこのシナリオに出くわしたことがありますか?

それほど多くのことはありませんが、どこを見ればよいかについてのヒントや指針は役に立ちます。これで何を検索すればよいかわかりません。

ありがとう


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;
4

2 に答える 2

1

私は自動メモリカウントにストロングを使用していませんが、好きではありません。やってみました

@property (retain, nonatomic) NSMutableArray *usersFiltered;

次の行を置き換えることができます。

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

と:

dbEntries.usersFiltered = [arrayAdder autorelease];
//[arrayAdder release];
于 2012-08-05T05:05:01.557 に答える
0

わお。わかりましたので、答えは @omz のポイントに関連していました。[NSString stringWithFormat を使用すべきではないときに使用していました。それを削除するとFMResultSet *results = [database executeQuery:@"SELECT * FROM users WHERE firstname LIKE ? AND lastname LIKE ?", filterStringFirst, filterStringLast];、警告が発生せず、デバイスで機能するようになりました。ただし、シミュレーターでは機能しましたが、以前はデバイスでは機能しなかったのはおかしいです。

于 2012-08-05T17:49:01.463 に答える