1

我正在跟上美妙的 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
4

2 回答 2

0

我放弃了尝试自己导航 NSManagedObject 并使用了基本但可行的活动记录,例如 ClarkWare 的包装器

于 2012-07-05T13:08:32.330 回答
0

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

在更新之前尝试从存储中获取对象,然后保存上下文。

于 2012-09-25T18:51:22.837 回答