2015-10-14 24 views
0

我知道這個問題已被詢問並回答了很多次,但無論我嘗試多少種解決方案,我都無法使其工作。iOS9 - 將字符串保存到核心數據

因此,我的應用程序將存儲有關當前登錄用戶的用戶信息。我想將它作爲簡單用戶對象存儲在覈心數據中。

我已經創建了下面的屬性叫UserData一個新的實體:

name 
username 
profilePicture 

當用戶登錄時,這些值是從服務器獲取,並應在覈心數據存儲在本地。

我已經產生NSManagedObject子對我的實體並結束了與以下兩類

// UserData.swift 
// Created by xxx on 2015-10-14. 

import Foundation 
import CoreData 

class UserData: NSManagedObject { 

// Insert code here to add functionality to your managed object subclass 

} 

// UserData+CoreDataProperties.swift 
// Created by xxx on 2015-10-14. 

// Choose "Create NSManagedObject Subclass…" from the Core Data editor menu 
// to delete and recreate this implementation file for your updated model. 

import Foundation 
import CoreData 

extension UserData { 

    @NSManaged var profilePicture: NSData? 
    @NSManaged var username: String? 
    @NSManaged var name: String? 

} 

有兩個函數調用時的用戶名應保存或者從核心獲得數據

func saveUsername(username: String) { 

    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let entity = NSEntityDescription.entityForName("UserData", 
     inManagedObjectContext:managedContext) 

    let user = UserData(entity: entity!, 
     insertIntoManagedObjectContext: managedContext) 

    user.setValue(username, forKey: "name") 

    do { 
     try managedContext.save() 
    } catch let error as NSError { 
     print("Could not save \(error), \(error.userInfo)") 
    } 
} 

func getUsername() -> String{ 
    let appDelegate = 
    UIApplication.sharedApplication().delegate as! AppDelegate 

    let managedContext = appDelegate.managedObjectContext 

    let fetchRequest = NSFetchRequest(entityName: "UserData") 

    var users = [UserData]() 

    do { 
     let results = 
     try managedContext.executeFetchRequest(fetchRequest) 
     users = results as! [UserData] 
    } catch let error as NSError { 
     print("Could not fetch \(error), \(error.userInfo)") 
    } 
    return users[0].name! 
} 

這是我第一次嘗試使用核心數據,似乎我錯過了一些東西。任何人都可以看到這裏可能是錯的嗎?我不確定數據是否正確保存,並且fetchRequest中的results是空數組。

+0

我只是用你的代碼,它工作正常。你從哪裏調用'saveUsername'和'getUsername'? – joern

回答

0

Hopfully this會回答你的問題的一部分, 「我不知道,如果數據正確保存」

說明的Xcode 6.0.1

  1. 的Xcode>打開> YourProject
  2. 的Xcode >產品>運行
  3. Xcode>窗口>設備
  4. (第1列 - 選擇)設備> YourDeviceName
  5. (2列 - 選擇)已安裝的應用> YourAppName
  6. (2列 - 選擇)下的 '已安裝的應用' 列表
  7. (彈出 - 選擇)齒軌下載集裝箱... 保存位置
  8. 權點擊 'YourAppName.xcappdata'
  9. 選擇 '顯示包內容'
  10. AppData的>文檔> YourDatabase
+0

@jruizaranguren哦,謝謝你的更正。我沒有意識到這是一個問題。 – Tr0yJ