2012-05-07 8 views
0

UIViewControllerでエンティティにオブジェクトを挿入する必要があります。私は自分のデータベースモデル(エンティティと属性)を設計しました。私はUIViewControllerでエンティティを追加しています。 appDelegate.mのdidFinishLaunchingwithOptionsメソッドで何を追加する予定ですか?ビューコントローラーを介してエンティティにデータを追加する

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch 
    return YES; 
} 

そしてTUTViewController(私自身のビューコントローラ - UIViewController)のために、私は、オブジェクトを挿入するための以下のコードを使用しています。

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 

    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
    NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity]; 
    NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 

    NSString *stripped1 = [response stringByReplacingOccurrencesOfString:@"\r" withString:@""]; 
    NSMutableArray *rows = [NSMutableArray arrayWithArray:[stripped1 componentsSeparatedByString:@"\n"]]; 
    NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:[rows count]]; 
    NSMutableArray *contentArray1 = [NSMutableArray arrayWithCapacity:[rows count]]; 

    NSArray *components; 
    NSLog(@"count:%d",[rows count]); 

    for (int i=0;i<[rows count]; i++) { 

     if(i == 0 || [[rows objectAtIndex:i] isEqualToString:@""]){ 
      continue; 
     } 

     components = [[rows objectAtIndex:i] componentsSeparatedByString:@","]; 
     id x = [components objectAtIndex:0] ; 
     id y = [components objectAtIndex:1]; 
     id z = [components objectAtIndex:2]; 

     [contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x,@"X",y,@"Y", nil]]; 
     [contentArray1 addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x,@"X",z,@"Y", nil]]; 

     [newManagedObject setValue:[x] forKey:@"timeStamp"]; 
     [newManagedObject setValue:[y] forKey:@"beat"]; 
     [newManagedObject setValue:[z] forKey:@"rate"]; 

     // Save the context. 
     NSError *error = nil; 
     if (![context save:&error]) { 

      NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 

      NSLog(@"Contents of Uterus Contraction: %@",contentArray); 
      NSLog(@"Contents of Heart Beat: %@",contentArray1); 
     }  
    } 
} 

紛失しているものはありますか?私はエラーで終わるよ:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '+entityForName: could not locate an NSManagedObjectModel for entity name 'FetalData''

答えて

0

あなたは、コアデータスタックやUIManagedDocumentオブジェクトを設定しましたか?

管理対象オブジェクトモデルを設定しなかった場合、これが問題になる可能性があります。つまり、FetalDataエンティティを定義するマネージオブジェクトモデルをロードしていない可能性があります。詳細については、insertnewobjectforentityfornameを参照してください。

私は空のプロジェクトを作成し、Xcodeにコアデータを作成させることをお勧めします。このようにして、コードの動作を確認することができます。

いくつかの注意事項

は、なぜあなたはNSFetchResultsControllerを使うのですか?

メソッドの最後にsaveコールを移動します。この方法で、ディスクへの複数回のラウンドトリップを回避できます。

コアデータの使用を開始する場合は、core-data-on-ios-5-tutorial-getting-startedをお勧めします。

希望します。

関連する問題