0

ねえ、データベース アクセス用のカスタム取得メソッドを作成しました。

+(NSArray*) recordsForTable:(NSString *)table predicate:(NSPredicate *)prd{
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:table inManagedObjectContext:managedObjectContext];

    [fetchRequest setEntity:entity];

    [fetchRequest setPredicate:prd];

    NSArray *records = [managedObjectContext executeFetchRequest:fetchRequest error:nil];

    [fetchRequest release];

    return records;
}

次に、このメソッドで上記のメソッドを使用します。

-(NSArray *)tableViewControllerData{

    NSNumber *savedBool = [[NSNumber alloc] initWithBool:YES];

    NSString *onlyGetSavedVisitObjects = [NSString stringWithFormat:@"bolSaved=%@", savedBool];
    [savedBool release];
    NSMutableArray *data = [[[CoreDataAccess recordsForTable:@"LPVisit" stringPredicate:onlyGetSavedVisitObjects] mutableCopy] autorelease];
    NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"dteVisitDate" ascending:NO];
    NSArray *descriptors = [NSArray arrayWithObjects:dateDescriptor, nil];
    [data sortedArrayUsingDescriptors:descriptors];

    return data;    
}

問題は、ユーザーが LPVisit テーブルに変更を加え、このメソッドを呼び出してそれらの変更を表示すると、アプリケーションがクラッシュすることです。

[編集]

それが生成する例外は次のとおりです。

 -[__NSArrayM objectID]: unrecognized selector sent to instance 0x4dac1f0

エラーは次の行にあると思います:

NSMutableArray *data = [[[CoreDataAccess recordsForTable:@"LPVisit" stringPredicate:onlyGetSavedVisitObjects] mutableCopy] autorelease];

自動解放を削除すると、メモリ リークが発生しますが、アプリケーションはクラッシュしません。

誰か洞察を持っていますか、事前に感謝します

4

1 に答える 1

0

変更可能なコピーが例外をスローしている可能性*recordsはありnilますか? これ@"bolSaved=%@"は、 がタイプミスであり、 である必要がある場合に発生する可能性があります@"boolSaved=%@"

于 2011-03-21T14:58:33.127 に答える