5

修正方法がわからないコア データ エラーが発生しています。

基本的に、オブジェクトのすべてのデータをディクショナリに引き出し、データをフォームに表示し、一部のフィールドを編集してから、送信時にデータをオブジェクトに保存しようとしています。

ただし、すべての新しい/更新された値を設定すると、エラーが発生します

Unacceptable type of value for attribute: property = "totalLocations"; desired type = NSNumber; given type = __NSCFString; value = 7.

この特定のプロパティを処理するコードは次のとおりです...

    //grab the value from the property

    if (myObject.totalLocations)
    [data setObject:myObject.totalLocations forKey:@"totalLocations"];

    // store it back to the object
    _myObject.totalLocations = [data objectForKey:@"totalLocations"];

これらの 2 行を除けば、このプロパティはあまり使用されていません。変更できますが、この特定の画面でユーザーが変更することはできません

4

1 に答える 1

7

totalLocationsコア データ エンティティの型はIntegerNSStringmyObject.totalLocationsですか? はいの場合、コアデータを次のように設定する必要があります。

[data setValue:[NSNumber numberWithInteger:[myObject.totalLocations integerValue]] forKey:@"totalLocations"];

管理対象オブジェクトを設定する方法は次のとおりです。

- (void)insertNewPromo:(NSDictionary *)promoJson
{
  NSManagedObjectContext *context = [self.promoFetchedResultsController managedObjectContext];
  NSEntityDescription *entity = [[self.promoFetchedResultsController fetchRequest] entity];
  NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

  // Checking if inappropriate data are in the JSON to avoid some crashes.
  if ([[promoJson objectForKey:@"id"] isKindOfClass:[NSNull class]])
      [newManagedObject setValue:nil forKey:@"id"];
  else
      [newManagedObject setValue:[NSNumber numberWithInteger:[[promoJson objectForKey:@"id"] integerValue]] forKey:@"id"];
  ...
  ...
  NSError *error = nil;
  if (![context save:&error])
  {
      if (DEBUG_ON == 1)
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
      abort();
  }
}

idオブジェクトpromoJsonは NSString です

于 2013-04-18T15:13:59.347 に答える