[英]How to save NSArray data in coredata?
我想將數據從NSArray
保存到coredata中。 我該如何實現?
NSArray *fetchdata = [Lockbox arrayForKey:@"fetch"];
在這里,我以以下形式獲取數據:
如何將這些數據保存在NSManageobject
?
這是我的嘗試:
NSFetchRequest *fetchrequestforside=[NSFetchRequest fetchRequestWithEntityName:@"demo"];
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newDevice1 = [NSEntityDescription
insertNewObjectForEntityForName:@"demo"
inManagedObjectContext:context];
NSArray *fetchdata = [Lockbox arrayForKey:@"fetch"]; //
for (int i =0;i<[fetchdata count];i++){
NSString *Name = [[fetchdata objectAtIndex:i] objectForKey:@"name"];
NSString *Websitename = [[fetchdata objectAtIndex:i] objectForKey:@"websitename"];
NSString *Feedlink = [[fetchdata objectAtIndex:i] objectForKey:@"feedurl"];
NSLog(@"value:%@,%@,%@",Name,Websitename,Feedlink);
[newDevice1 setValue:Name forKey:@"name"];
[newDevice1 setValue:Websitename forKey:@"websitename"];
[newDevice1 setValue:Feedlink forKey:@"feedurl"];
NSLog(@"value:%@,%@,%@",Name,Websitename,Feedlink);
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
但是用這種技術我得到了一個錯誤。 我該如何解決這個問題?
編輯:-
我收到此錯誤:
***由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'-[__ NSCFString objectForKey:]:無法識別的選擇器發送到實例0x7ff262520660'
您的代碼將fetchdata
數組的內容視為NSDictionary
實例,但是LockBox
似乎僅支持字符串內容:
-(NSArray *)arrayForKey:(NSString *)key
{
NSArray *array = nil;
NSString *components = [self objectForKey:key];
if (components)
array = [NSArray arrayWithArray:[components componentsSeparatedByString:kDelimiter]];
return array;
}
因此,您需要處理轉換。 您可能已經在處理它了,以存儲原始數組...
但是,這就是為什么會出現錯誤,代碼需要一個字典,但實際上卻得到一個字符串的原因
您是否有一個看起來像這樣的物體?
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface demo : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * websitename;
@property (nonatomic, retain) NSString * feedurl;
@end
創建了這樣的對象后(使用insertNewObjectForEntityForName),嘗試像這樣獲取它:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error];
順便說一句,我建議您遵循命名約定並將其命名為Demo。 干杯
我建議您使用很棒的MagicalRecord庫,它可以節省很多時間,而且非常簡單,這里的教程MagicalRecord Tutorial
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.