1

エラーが発生しているようですが、わかりません。うまくいけば、これはあまりにも混乱して長くなることはありませんが、私の検索では答えが見つからないようですので、必要と思われます。CoreData/RegExエラー:オブジェクトから正規表現を作成できません

Customer年代を持つことができますが、多くのInvoicesInvoicesItemSolds多くを持つことができます

ItemSold 請求書 お客様:私のプログラムでは、私はいくつかのエンティティを持っています。

私のInterface Builderには、3つのテーブルがあります。 1つの表は得意先を表し、別の表は請求書を表し、最後の表はその請求書のitemsoldを表します。 顧客を選択すると、その請求書が請求書テーブルに表示されます。請求書をクリックすると、その請求書の明細が最後の表に表示されます。

テーブルを選択するとエラーが発生しているようです。興味深いことに、別のビューでは、これを行うことができます(タイプとの関係に基づいてアイテムをソートしようとしているとき)。しかし、私はここで働くことができません。

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(HistoryController *)[[NSApplication sharedApplication] delegate] managedObjectContext]; 
} 
NSError *error = nil; 

// fetch all customers 
NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"Customer" 
              inManagedObjectContext:managedObjectContext]; 
[fetchRequest2 setEntity:entity2]; 
fetchedCustomers = [managedObjectContext executeFetchRequest:fetchRequest2 error:&error]; 
if (fetchedCustomers == nil) { 
    NSLog(@"ERROR"); 
} 
[fetchRequest2 release]; 
// end of customer fetch 

// fetch all invoices 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Invoice" 
              inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

NSLog(@"A"); 
if ([customerTable selectedRow] >= 0) 
{ 
    NSLog(@"B"); 

    int index = (int)[customerTable selectedRow]; 

    NSLog(@"%@", index); 
    NSString *customerString = [[fetchedCustomers objectAtIndex:(index)] valueForKey:@"CustomerNumber"]; 
    NSNumber *customerNumber = [NSNumber numberWithInt:([customerString intValue])]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"customer.CustomerNumber like %@", customerNumber]; 
    [fetchRequest setPredicate:predicate]; 
} 

fetchedInvoices = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
if (fetchedInvoices == nil) { 
    NSLog(@"ERROR"); 
} 
[fetchRequest release]; 
// end of invoice fetch 

// fetch specific invoice 
NSFetchRequest *fetchRequest3 = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity3 = [NSEntityDescription entityForName:@"ItemSold" 
              inManagedObjectContext:managedObjectContext]; 
[fetchRequest3 setEntity:entity3]; 

if ([invoicesListTable selectedRow] >= 0) 
{ 

    NSLog(@"C"); 
    int index = (int)[invoicesListTable selectedRow]; 

    NSLog(@"%i", (int)[invoicesListTable selectedRow]); 
    NSLog(@"%i", index); 
    NSString *invoiceString = [[fetchedInvoices objectAtIndex:(index)] 
           valueForKey:@"InvoiceNumber"]; 
    NSNumber *invoiceNumber = [NSNumber numberWithInt:([invoiceString intValue])]; 
    NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"invoice.InvoiceNumber like %@", invoiceNumber]; 
    [fetchRequest3 setPredicate:predicate3]; 
} 

NSLog(@"D"); 

fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest3 error:&error]; 
if (fetchedObjects == nil) 
{ 
    NSLog(@"ERROR"); 
} 
[fetchRequest3 release]; 

[invoiceTable reloadData]; 
NSLog(@"D2"); 

}

私は実行し、行をクリックすると、これは私が得るものです::

2012-02-13 16:42:35.326 InventoryProgram[7056:707] A

これは私の保存すべき項目を取得するためにフェッチされます2012-02-13 16:42:35.327 InventoryProgram[7056:707] C

2012-02-13 16:42:35.327 InventoryProgram[7056:707] 0

2012-02-13 16:42:35.328 InventoryProgram[7056:707] 0

2012-02-13 16:42:35.328 InventoryProgram[7056:707] D

2012-02-13 16:42:35.329 InventoryProgram[7056:707] Can't create a regex expression from object 2.

私はコントロールは、次の場所だけを示すために、文字の出力を示しています。行を選択すると、正しい行番号(0)が出力され、実際には問題が発生していると思った場所を過ぎてしまいます。文字Dを出力すると、NSPredicate領域が渡されます。これは、正規表現の問題が発生していると思います。私は今、それがexecuteFetchRequestに到達し、それに割り当てられたNSPredicateの問題に遭遇したと仮定しています。

ここに正しい方向で私に指摘する人はいませんか?私は、問題が何であるかについて私の心を包み込むことはできません。私は本当にここにあまりコードがないことを願っています、私はできるすべての情報を提供しようとしています。

答えて

8

は交換してください:付き

NSString *invoiceString = [[fetchedInvoices objectAtIndex:(index)] 
          valueForKey:@"InvoiceNumber"]; 
NSNumber *invoiceNumber = [NSNumber numberWithInt:([invoiceString intValue])]; 
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"invoice.InvoiceNumber like %@", invoiceNumber]; 

NSString *invoiceString = [[fetchedInvoices objectAtIndex:(index)] 
           valueForKey:@"InvoiceNumber"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"invoice.InvoiceNumber = %@", invoiceString]; 

は、問題を解決します。

関連する問題