簡體   English   中英

在Swift中使用CoreData的問題

[英]Issue using CoreData in Swift

因此,我已經成功地將CoreData實現到我的Xcode項目中,並且似乎所有內容都正確地鏈接在一起。 我當前在ViewController.swift中使用的代碼是:

func runTests(){

    let appDel : AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate

    let contxt : NSManagedObjectContext = appDel.managedObjectContext!

    let en = NSEntityDescription.entityForName( "SavedData", inManagedObjectContext: contxt )

    var newItem = data( entity: en!, insertIntoManagedObjectContext: contxt )

    newItem.test = "test123"

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

    NSLog("CoreData:\(newItem)")
    }

在我的knoData.swift中:

import Foundation
import UIKit
import CoreData

@objc( data )
class data: NSManagedObject {
    @NSManaged var test : String
}

當應用程序仍在運行時,當引用為“ newItem.test”時,它將正確返回“ test123”,但是當我嘗試再次運行該應用程序並對其進行引用時,它將返回nil直到再次設置。 我不省錢嗎? 是否沒有引用類? 有人請幫忙。

編輯:我上面的代碼沒有返回錯誤。 當我運行應用程序而不引用knoData.xcdatamodeld中的類數據時,它將在NSLog中返回

CoreData:<NSManagedObject: 0x79eb49d0> (entity: SavedData; id: 0x79eb6af0 <x-coredata://C40AE8E5-A846-4AC4-9A27-2FB109D6FE49/SavedData/p181> ; data: {
    test = test123; // it is only returning test123 because it was set previously, but when I run the app again and try to get the value without setting it again, it returns nil
})

但是當我確實在knoData.xcdatamodeld中引用類數據時,它將返回以下內容:

CoreData:

您需要從數據庫中獲取數據:

let fetchRequest = NSFetchRequest(entityName:"SavedData")
var error: NSError?
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [data]?
if let resultsArray = fetchedResults {
    if resultsArray.count > 0 {
        let newItem = resultsArray[0] as data
        println("Saved data is \(newItem.test)")
    } else {
        println("No results from fetch request.")
    }
}

我假設您的實體名稱為“ SavedData”,屬於“數據”類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM