Skip to content

Instantly share code, notes, and snippets.

@matsuhisa
Last active August 29, 2015 14:19
Show Gist options
  • Save matsuhisa/ab66e8b940feedaa66a6 to your computer and use it in GitHub Desktop.
Save matsuhisa/ab66e8b940feedaa66a6 to your computer and use it in GitHub Desktop.
Swift で CoreData の必要な初期データー(マスターデータ)を用意する ref: http://qiita.com/matsuhisa@github/items/741d7b1c2541ea6fc68d
func initMasters() {
println("initMasters ------------")
// plist の読み込み
let path:NSString = NSBundle.mainBundle().pathForResource("Masterdata", ofType: "plist")!
var masterDataDictionary:NSDictionary = NSDictionary(contentsOfFile: path)
let app: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let categoryContext: NSManagedObjectContext = app.managedObjectContext!
for(var i = 1; i<=masterDataDictionary.count; i++) {
let index_name: String = "Category" + String(i)
var item: AnyObject = masterDataDictionary[index_name]!
println(item["name"])
let categoryEntity: NSEntityDescription! = NSEntityDescription.entityForName(
"Categories",
inManagedObjectContext: categoryContext
)
var new_data = NSManagedObject(entity: categoryEntity, insertIntoManagedObjectContext: categoryContext)
//new_data.name = item["name"] as String
new_data.setValue(item["name"] as String, forKey: "name")
var error: NSError?
categoryContext.save(&error)
}
println("------------")
}
override func viewDidLoad() {
super.viewDidLoad()
var results:NSArray = readData()
if(results.count == 0) {
// 初期データーの投入
initMasters()
results = readData()
}
}
// ViewController.swift
// TestAppCoreDataInitApp01
import UIKit
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var results:NSArray = readData()
if(results.count == 0) {
// 初期データーの投入
initMasters()
results = readData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func readData() -> NSArray{
println("readData ------------")
let app: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let categoryContext: NSManagedObjectContext = app.managedObjectContext!
let categoryRequest: NSFetchRequest = NSFetchRequest(entityName: "Categories")
var results: NSArray! = categoryContext.executeFetchRequest(categoryRequest, error: nil)
for data in results {
println("------------")
println(data.name?)
println("------------")
}
return results
}
func initMasters() {
println("initMasters ------------")
// plist の読み込み
let path:NSString = NSBundle.mainBundle().pathForResource("Masterdata", ofType: "plist")!
var masterDataDictionary:NSDictionary = NSDictionary(contentsOfFile: path)
let app: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let categoryContext: NSManagedObjectContext = app.managedObjectContext!
for(var i = 1; i<=masterDataDictionary.count; i++) {
let index_name: String = "Category" + String(i)
var item: AnyObject = masterDataDictionary[index_name]!
println(item["name"])
let categoryEntity: NSEntityDescription! = NSEntityDescription.entityForName(
"Categories",
inManagedObjectContext: categoryContext
)
var new_data = NSManagedObject(entity: categoryEntity, insertIntoManagedObjectContext: categoryContext)
//new_data.name = item["name"] as String
new_data.setValue(item["name"] as String, forKey: "name")
var error: NSError?
categoryContext.save(&error)
}
println("------------")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment