2014-10-10 89 views
0

我部分遵循Ray Wenderlich的this教程(如果您搜索'保存運行',它應跳轉到與此問題有關的部分)。我也用'Swift'標記了這個標籤,因爲我不知道它是否快速導致任何問題(因爲它在ObjC的教程中工作)。NSOrderedSet不可轉換爲NSManagedObject

我目前堅持將位置數據保存到CoreData數據模型中。

這裏我saveSession方法的代碼:

func saveSession() 
    { 
     var newSession: Session = NSEntityDescription.insertNewObjectForEntityForName("Session", inManagedObjectContext: self.managedObjectContext!) as Session 

     newSession.timestamp = NSDate() 

     var tempArray = [AnyObject]() 
     for newLocation in self.locationsArray { 
      var location: Location = NSEntityDescription.insertNewObjectForEntityForName("Location", inManagedObjectContext: self.managedObjectContext!) as Location 

      location.timestamp = newLocation.timestamp 
      location.latitude = newLocation.coordinate.latitude 
      location.longitude = newLocation.coordinate.longitude 
      location.altitude = newLocation.altitude 
      location.heading = newLocation.heading 
      location.horizontalAccuracy = newLocation.horizontalAccuracy 
      location.verticalAccuracy = newLocation.verticalAccuracy 

      tempArray.append(location) 
     } 

     // This is the line producing the error: 
     // 'NSOrderedSet' is not convertible to 'NSManagedObject' 

     newSession.locations = NSOrderedSet(array: tempArray) 
    } 

這裏是我的數據模型:

會話實體 Session Entity

位置實體 Location Entity

讓我知道如果任何需要更多的代碼/信息來解決這個問題。任何幫助是極大的讚賞。

回答

0

您已將locations屬性定義爲「一對一」關係。它應該是 是一個「一對多」的關係。然後,您可以根據關係是否定義爲「有序」來分配NSSetNSOrderedSet, 。

+0

我在會話關係中這樣做了,我認爲這將是一個可以做到的事情......任何方法,如果我將位置更改爲「多對多」並勾選「已排序」,它不會使錯誤消失 – Chris 2014-10-10 11:26:19

+0

@Chris:你是否重新創建了託管對象子類文件? – 2014-10-10 11:31:16

+0

我現在做了,而且工作。非常感謝馬丁! :-) – Chris 2014-10-10 11:37:44

相關問題