颜色循环产生(null)而不是颜色

时间:2014-06-10 06:34:23

标签: ios objective-c core-data for-loop uicolor

几年前,@ BJ Homer很好地发布了这段代码。它实际上是用颜色填充数组,但我稍微修改它以填充核心数据存储以驱动UICollectionView。它似乎是这样做的,但我的所有颜色都是空的(黑色)。

以下是代码:

+(void) loadColorsIntoCD
{
    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];

    int tag = 0;
    float INCREMENT = 0.0625;
    for (float hue = 0.0; hue < 1.0; hue += INCREMENT)
    {
        UIColor *color = [UIColor colorWithHue:hue
                                    saturation:1.0
                                    brightness:1.0
                                         alpha:1.0];

        [CatColor MR_createInContext:localContext];

        CatColor *thisColor;
        thisColor.color = color;
        thisColor.isTaken = NO;
        tag++;
        thisColor.idNumber = [NSNumber numberWithInt:tag];
        NSLog(@"ThisColor.idNumber is %@",thisColor.idNumber);
        NSLog(@"ThisColor.color is %@",thisColor.color);
        [localContext MR_saveToPersistentStoreAndWait];
    }
    NSLog(@"%i CatColors available", [CatColor MR_countOfEntities]);
}

问题是,我的NSLog正在阅读:

ThisColor.idNumber is (null)

ThisColor.color is (null)

然后:

16 CatColors available

我真的很困惑这个值随着循环中的每次迭代而变化,似乎表明正在生成颜色:

color   UIDeviceRGBColor *  0x8d83870   0x08d83870

有人可以指出我的错误吗?一天中的大部分时间里,我一直在殴打这件事。

谢谢你的期待。所有人都非常感谢!

1 个答案:

答案 0 :(得分:2)

您没有将创建的实体分配给您的本地变量。你应该这样做:

CatColor *thisColor = [CatColor MR_createInContext:localContext];