2014-10-10 43 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

相关问题