将内容保存到Core Data实体的NSMutableArray元素的最佳方法

时间:2016-01-31 17:09:01

标签: objective-c core-data nsmutablearray

我只需要将具有数据的数组元素移动到Core Data;这是我的代码(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,但没有发现具体内容。任何帮助,将不胜感激。 : - }

1 个答案:

答案 0 :(得分:1)

使用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];
}

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