我只需要将具有数据的数组元素移动到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,但没有发现具体内容。任何帮助,将不胜感激。 : - }
答案 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];
}
您应该确保数组的条目数不能超过属性,否则会出错。