2016-07-11 5 views
0

Ich erhalte derzeit den Kerndatenfehler und einen 'nicht erkannten Selektor an Instanz # gesendet'. Ich kann nicht herausfinden, was passiert. Hier ist der Code.CoreData: Fehler: Fehler beim Aufrufen des designierten Initialisierers für die NSManagedObject-Klasse 'Video'

import UIKit 
import Alamofire 

protocol FetchResultsControllerDelegate { 
func dataReady() 
} 

class PNSClient: NSObject { 

var pnsVideos = [Video]() 
var delegate: FetchResultsControllerDelegate? 

func getFeedVideos() { 

    // Fetch the videos dynamically through the YouTube Data API 
    Alamofire.request(.GET, Constants.YouTubeURL, parameters: [Parameters.Part: Parameters.Snippet, Parameters.PlaylistId: Constants.UPLOADS_PLAYLIST_ID, Parameters.Key: Constants.API_KEY, Parameters.MaxResults : 50], encoding: .URL, headers: nil) 
     .validate() 
     .responseJSON { (response) -> Void in 

     switch response.result { 
     case .Success(let JSON): 
      print("Success with JSON: \(JSON)") 

      let response = JSON as! NSDictionary 
      let userID = response.objectForKey("items") 
      print(userID) 

     case .Failure(let error): 
      print("Request failed with error: \(error)") 
     } 

     if let JSON = response.result.value { 

      var arrayOfPNSVideos = [Video]() 

      for video in JSON["items"] as! NSArray { 
       print(video) 

       let videoObj = Video() 
       videoObj.videoId = video.valueForKeyPath("snippet.resourceId.videoId") as? String 
       videoObj.videoTitle = video.valueForKeyPath("snippet.title") as? String 
       videoObj.videoDescription = video.valueForKeyPath("snippet.description") as? String 
       if let highUrl = video.valueForKeyPath("snippet.thumbnails.high.url") as? String { 
        videoObj.videoThumbnailUrl = highUrl 

       arrayOfPNSVideos.append(videoObj) 
      } 

      self.pnsVideos = arrayOfPNSVideos 

      if self.delegate != nil { 
       self.delegate?.dataReady() 
       } 
     } 
    } 
} 

Wenn am Repo-Suche helfen: www.github.com/pbellot77/pop-nutshell

+0

In welcher Zeile tritt das Problem auf? – Jim

+1

Wenn sich etwas nicht geändert hat, können Sie ein 'NSManagedObject' nicht mit' Video() 'instanziieren. Es muss mit dem 'NSManagedObjectContext' eingefügt werden. – Bek

+0

Ich bekomme einen Fehler in Zeile 51 des PNSClient. Ich versuche, die Objekte für die Wiederverwendbarkeit direkt in den Kerndaten zu speichern. –

Antwort

1

Zum Speichern von Objekten in Coredata, müssen Sie dieses Muster unten folgen. Ich empfehle Ihnen eine tutorial auf CoreData oder die docs lesen.

let entity = NSEntityDescription.entityForName("Video", inManagedObjectContext: managedObjectContext!) 
// you need to make sure you have a reference to your CoreData managedObjectContext 
    let videoObj = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedObjectContext!) as? Video 
    videoObj.property1 = "some value" 
    videoObj.videoId = video.valueForKeyPath("snippet.resourceId.videoId") as? String 

// etc ... 


do { 
    try managedObjectContext!.save() 
} 
catch { 
    print("Error saving video changes: \(error)") 
} 
Verwandte Themen