使用RubyMotion更新NSManagedObject项

时间:2012-07-04 12:51:21

标签: ios ruby rubymotion

我正在快速使用精彩的RubyMotion,但无法更新NSManagedObject字段,我的项目基于示例应用Locations

locations_store.rb中的代码具有创建和删除...

def add_location
    # Yield a blank, newly created Location entity, then save the model.
    yield NSEntityDescription.insertNewObjectForEntityForName('Location', inManagedObjectContext:@context)
    save
end

def remove_location(location)
    # Delete the given entity, then save the model.
    @context.deleteObject(location)
    save
end

但是我很难找到一种方法来实现类似的方法来更新数据存储,在我的新location_details_controller.rb中我存储了一个像这样的位置的实例,

def showDetailsForLocation(location)
    @location = location
    navigationItem.title = "%0.3f, %0.3f" % [location.latitude, location.longitude]
end

然后在点击保存按钮时触发......

def saveLocation(sender)

    LocationsStore.shared.update_location(@objectid, "field1updatevalue", "field2updatevalue")
end 

但是,我尝试了很多方法来解决这个问题,但找不到更新此方法记录的方法......

def update_location(location, f1, f2)
    location.f1 = f1
    location.f2 = f2
    save
end

2 个答案:

答案 0 :(得分:0)

我试图自己导航NSManagedObject并使用基本但可行的activerecord like wrapper by ClarkWare

答案 1 :(得分:0)

看起来您没有在update_location中为上下文创建对象。在保存上下文之前,您应该在该上下文中生成一个新对象,或者在商店中找到一个。

尝试在更新前从商店中提取对象,然后保存上下文。