如何在核心数据中保存NSArray数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在核心数据中保存NSArray数据?相关的知识,希望对你有一定的参考价值。
我想将数据保存在qazxsw poi的核心数据中。我怎样才能做到这一点?
NSArray
在这里,我收到以下表格的数据:
NSArray *fetchdata = [Lockbox arrayForKey:@"fetch"];
这是我的尝试:
NSManageobject
但是使用这种技术我收到了一个错误。我该如何解决这个问题?
编辑:-
我收到此错误:
***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFString objectForKey:]:无法识别的选择器发送到实例0x7ff262520660'
您的代码将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();
}
}
数组的内容视为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;
}
在创建这样的对象(使用insertNewObjectForEntityForName)之后尝试获取它:
#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
顺便说一句,我建议你坚持命名约定并称之为Demo。干杯
我建议你使用真棒库MagicalRecord它节省了很多时间,这里非常容易它的教程NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSArray *results = [self.managedObjectContext executeFetchRequest:request error:&error];
以上是关于如何在核心数据中保存NSArray数据?的主要内容,如果未能解决你的问题,请参考以下文章