0我試圖在我的應用第一次運行時用數組預先加載核心數據。在viewDidLoad中,它檢查覈心數據是否爲空。如果是,它調用一個方法來加載一個數組的核心數據。我的問題是,當我檢查覈心數據的內容時(使用Core Data Pro Readonly),核心數據的內容中有一項:「NULL」。這是我認爲加載數組核心數據這是給我的問題的關鍵線路:將數組預加載到核心數據中
newArray = [elementsArray objectAtIndex:0];
核心數據實體被稱爲「元素」,並有一個屬性「的ElementName」。 這是整個方法的內容:
-(void)loadElementsEntity {
NSLog(@"LOADING ELEMENTS INTO CORE DATA");
NSMutableArray *elementsArray = [[NSMutableArray alloc]init];
// LOAD THE DATA INTO THE ARRAY
elementsArray = [[NSMutableArray alloc] initWithObjects:
@"Wall",
@"Floor",
@"Ceiling",
@"Door",
@"Window",
@"Roof",
@"Electrical",
@"",
@"* New Element *", nil];
// LOAD THE ARRAY INTO CORE DATA: ELEMENTS ENTITY
AppDelegate *aDel = [[UIApplication sharedApplication]delegate];
NSManagedObjectContext *moc = [aDel managedObjectContext];
NSManagedObject *newArray;
newArray = [NSEntityDescription insertNewObjectForEntityForName:@"Elements" inManagedObjectContext:moc];
newArray = [elementsArray objectAtIndex:0];
NSError *error = nil;
if (![moc save:&error]) { //SAVE FAILED
NSLog(@"YOUR SAVE FAILED! %@", [error localizedDescription]);
} else {
NSLog(@"YOUR SAVE SUCCEEDED.");
}
// CHECK TO SEE IF CORE DATA WAS LOADED
NSLog(@"LISTING THE ARRAY");
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setEntity:[NSEntityDescription entityForName:@"Elements" inManagedObjectContext:moc]];
NSArray *testArray = [self.managedObjectContext executeFetchRequest:request error:&error];
NSLog(@"ELEMENTSARRAY COUNT: %d", [elementsArray count]);
NSLog(@"LOADED TESTARRAY: count = %d", [testArray count]);
}
任何人都可以指出我要去的地方錯在這裏?
我已經使用for語句更新了方法的保存部分,如下所示。
但它仍然在覈心數據中產生一個NULL條目!
請幫忙!
// LOAD THE ARRAY INTO CORE DATA ELEMENTS
AppDelegate *aDel = [[UIApplication sharedApplication]delegate];
NSManagedObjectContext *moc = [aDel managedObjectContext];
NSManagedObject *newString = [NSEntityDescription insertNewObjectForEntityForName:@"Elements" inManagedObjectContext:moc];
NSError *error = nil;
for (NSString *elementname in elementsArray) {
NSLog(@"NAME= %@", elementname);
[newString setValue:elementname forKey:@"elementName"];
if (![moc save:&error]) { //SAVE FAILED
NSLog(@"YOUR SAVE FAILED! %@", [error localizedDescription]);
} else {
NSLog(@"SAVE SUCCEEDED.");
}
}
你試圖設置您建設部@「樓」,這是不是唯一的錯誤。首先儘量不要將其保存爲數組。 – BoranA
請不要將它保存爲數組?我不遵循你的意思。 – Jupiter869
數組中的每個元素必須是元素表中的一行。你需要迭代並保存它們。 – BoranA