2014-08-30 2 views
6

Я пишу игру iOS в Swift, и я хотел включить в конце ярлык. Я думаю, что функция сохранения правильная, но нагрузка одна - это проблема, которая дает мне проблемы. Я уже создал объект ("BestScores") и атрибуты ("classicBestScoreTF"):CoreData Swift: как сохранить и загрузить данные?

Чтобы сохранить рекорд:

var bestscore25 = 1000 
var score: int 

func savescore() {  
    var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) 
    var context:NSManagedObjectContext = appDel.managedObjectContext! 
    var score25: AnyObject! = NSEntityDescription.insertNewObjectForEntityForName("BestScores", inManagedObjectContext: context) as NSManagedObject 
    score25.setValue(score, forKey: "classicBestScoreTF") 
    context.save(nil) 
} 

func loadscore() { 
    var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate) 
    var context:NSManagedObjectContext = appDel.managedObjectContext! 
    bestScore25 = valueForKey("classicBestScoreTF") as Int 
} 

func endgame() { 

    if score > bestScore25 { 
     savescore() 
     loadscore() 
     bestScoreLabel.text = "Best Score: \(bestScore25)" 
    } 

    if score < bestscore {    
     loadscore() 
     bestScoreLabel.text = "Best Score: \(bestScore25)" 
    }  
} 

Это не работает :(Пожалуйста, помогите

+0

вы могли бы начать путем передачи и оценки объект ошибки во время сохранения. – vikingosegundo

+0

https://www.youtube.com/watch?v=3IDfgATVqHw&feature=youtu.be – herby

+0

Просто следуйте инструкциям [ЭТО] (http://jamesonquave.com/blog/core-data-in-swift-tutorial-part-1 /), он даст вам пошаговые руководства. – Shardul

ответ

23

Сохранение данных:

var person = NSEntityDescription.insertNewObjectForEntityForName("Person", 
inManagedObjectContext: self.managedObjectContext!) as Person 
person.name = "Mary" 
person.age = Float(arc4random() % 100) 

var error : NSError? = nil 
if !self.managedObjectContext!.save(&error) { 
    NSLog("Unresolved error \(error), \(error!.userInfo)") 
    abort() 
} 

Загрузка данных:

var error: NSError? = nil 
var fReq: NSFetchRequest = NSFetchRequest(entityName: "Frases")  
fReq.predicate = NSPredicate(format: "id contains[c] %@", String(day)) 
var sorter: NSSortDescriptor = NSSortDescriptor(key: "id" , ascending: false) 
fReq.sortDescriptors = [sorter] 
fReq.returnsObjectsAsFaults = false 
let result : [AnyObject] = self.managedObjectContext!.executeFetchRequest(fReq, error:&error)! 
+0

Не нужно ли вызывать 'save()' после того, как вы введете новый объект? – MarksCode

2

Для сохранения данных , вы должны использовать:

context.insertNewObjectForEntityForName(...) 

И то же самое, когда вы загружаете данные, он должен быть:

context.valueForKey (...)

Однако я не уверен, что это даже правильный синтаксис, так как вам может понадобиться получить массив сущностей, а затем получить объект с индексом 0. На этом примечании почему вы используете основные данные для высоких баллов? Вы можете захотеть взглянуть на значения по умолчанию пользователя или ICloud, Core данных предназначен больше для баз данных

+0

Если это смущает, я могу предоставить пример кода, просто дайте мне знать – steffeydev

+0

не 'context.insertNewObjectForEntityForName ...' но 'NSEntityDescription.insertNewEntyty: inManagedObjectContext: ...' – Massmaker

Смежные вопросы