将包含内容的 NSMutableArray 元素保存到核心数据实体的最佳方法

Best way to save NSMutableArray elements with content to Core Data entity

我只需要将有数据的数组元素移动到核心数据;这是我的代码(userPreferences 是我的 CoreData 实体):

    int count = [addlServicesArray count];

    //  move entire array elements with content to userPreferences
    userPreferences.aAddlSvcs1 = addlServicesArray[0];
    userPreferences.aAddlSvcs2 = addlServicesArray[1];
    userPreferences.aAddlSvcs3 = addlServicesArray[2];
    userPreferences.aAddlSvcs4 = addlServicesArray[3];
    userPreferences.aAddlSvcs5 = addlServicesArray[4];
    userPreferences.aAddlSvcs6 = addlServicesArray[5];
    userPreferences.aAddlSvcs7 = addlServicesArray[6];
    userPreferences.aAddlSvcs8 = addlServicesArray[7];
    userPreferences.aAddlSvcs9 = addlServicesArray[8];
    userPreferences.aAddlSvcs10 = addlServicesArray[9];
    userPreferences.aAddlSvcs11 = addlServicesArray[10];
    userPreferences.aAddlSvcs12 = addlServicesArray[11];
    userPreferences.aAddlSvcs13 = addlServicesArray[12];
    userPreferences.aAddlSvcs14 = addlServicesArray[13];

问题是,如果我只有数组第 0 行中的数据,当它移动到第 1 行时它会崩溃,因为第 1 行是空的。我敢肯定有更好的方法可以做到这一点;我查看了 SO 和 Google,但没有发现任何具体内容。任何帮助,将不胜感激。 :-}

使用 for 循环。在循环中,创建一个带有属性名称的字符串,然后使用 setValue:forKey: 方法:

NSUInteger count = [addlServicesArray count];
for (NSUInteger i=0; i<count; i++) {
    NSString *key = [NSString stringWithFormat:@"aAddlSvcs%lu",i];
    [userPreferences setValue:addlServicesArray[i] forKey:key];
}

您应该确保数组的条目数不能多于属性数,否则会出错。