【问题标题】:Integer to NSInteger And Save To Core Data整数到 NSInteger 并保存到核心数据
【发布时间】:2011-12-27 10:52:34
【问题描述】:

我有一个名为 marbles 的整数,并尝试使用以下代码将其保存到数组中:

[records setValue:marbles forKey:@"marbles"];

使用此代码,我收到警告:

警告:语义问题:不兼容的整数到指针转换将“int”发送到“id”类型的参数

那么,如何设置 NSInteger 的值。

下一个问题,如何将数组重新上传到核心数据中?我获取数组,进行更改,以及如何将这些更改应用回 Core Data?

谢谢

【问题讨论】:

    标签: iphone objective-c ios xcode core-data


    【解决方案1】:

    用你的整数初始化一个 NSNumber(这是 CoreData 所期望的):

    NSNumber *marbleNumber = [NSNumber numberWithInt:marbles];
    [records setObject:marbleNumber forKey@"marbles"];
    

    或者:

    [records setMarbles:[NSNumber numberWithInt:marbles]];
    

    要保留您的更改,请保存您的上下文:

    NSError *error;
    [myManagedObjectContext save:&error];
    
    //handle your error
    

    【讨论】:

      【解决方案2】:

      NSArrays 只会接受对象,因此第一步是使用此方法将您的 NSInteger 转换为 NSNumber:

      + (NSNumber *)numberWithInt:(int)value
      

      所以:

      NSNumber *myNumber = [NSNumber numberWithInt:marbles];
      

      然后你可以这样做:

      [records setValue:myNumber forKey:@"marbles"];
      

      基本上,一旦你获取数据,你就会得到一个 managedObjectContext,把它想象成一个绘图板,你对这个对象所做的任何更改(包括添加或删除新对象)都可以使用类似这样的东西再次保存到 CoreData :

      NSError *error;
              if (![context save:&error]) {
                  // Update to handle the error appropriately.
                  NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
                  exit(-1);  // Fail
              }
      

      context 是你通过 NSFetchedResultsController 获得的上下文。你可以这样得到:

      NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
      

      我建议你看看Core Data programming guide

      【讨论】:

        【解决方案3】:
        - (id)primitiveValueForKey:(NSString *)key;    
        - (void)setPrimitiveValue:(id)value forKey:(NSString *)key;
        

        使用 NSNumber 代替 (id)value

        【讨论】:

          猜你喜欢
          • 2015-02-26
          • 1970-01-01
          • 2013-09-24
          • 2017-08-01
          • 2016-08-19
          • 2010-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多