【发布时间】:2012-05-03 23:04:58
【问题描述】:
我有一个名为namesArray 的NSArray。
我需要使用coredata 存储namesArray 中存在的所有名称。
我如何做到这一点?
我们是否需要使用 sqlite manager 创建像 'names.sqlite' 这样的数据库?
【问题讨论】:
标签: iphone objective-c sqlite core-data nsmanagedobject
我有一个名为namesArray 的NSArray。
我需要使用coredata 存储namesArray 中存在的所有名称。
我如何做到这一点?
我们是否需要使用 sqlite manager 创建像 'names.sqlite' 这样的数据库?
【问题讨论】:
标签: iphone objective-c sqlite core-data nsmanagedobject
不,您不需要使用管理器创建names.sqlite。您应该阅读网上找到的一些教程,例如:Here 或 Here。
您基本上需要以valueForKey 格式保存在数据模型中。
//Coredata saving
self.theAppDel=[[UIApplication sharedApplication] delegate];
NSManagedObjectContext*context=[self.theAppDel managedObjectContext];
NSManagedObject*object=[NSEntityDescription insertNewObjectForEntityForName:@"Contacts" inManagedObjectContext:context];
NSError*error=nil;
[object setValue:[namesArray objectAtIndex:0] forKey:@"name"]; //for saving first name
1. 创建您的 appdelegate 的实例。
2. 访问您的Managed Object Context 和Managed Object
3. 假设您创建了一个包含姓名联系人的实体描述。根据数组中的项目数,为名为 name 的列添加每个对象(我假设您已经创建了该列)。
这是一个简短的示例,但您应该阅读教程并阅读苹果的文档。
编辑: 正如 Ondra 提到的,我之前的解决方案将只添加最后一个元素。使用以下添加:Adding NSMutableArray in CoreData 谢谢Ondra Peterka
【讨论】:
我认为 iNoobs 的答案不起作用 - 循环会多次覆盖该值(只会保存姓氏)。在任何情况下,阅读教程都是个好主意。 也许您正在寻找的答案在这里:Saving an NSMutableArray to Core Data
另外...我知道您明确表示“保存到核心数据”,但以防万一 - 您也可以使用不同的存储,例如 NSUserDefaults:
[[NSUserDefaults standardUserDefaults] setObject:namesArray forKey:@"namesArray"];
稍后使用:
myArray= [[NSMutableArray alloc] initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"namesArray"]];
当然 NSUserDefaults 只用于少量数据。
祝你好运;)
【讨论】: