有没有可用于iOS的数据绑定机制?

在.NET中,我只是做一些像DataForm.Source = Object,然后魔术发生。 平台将数据从UI文件更改为对象属性,进行validation等等。 我可以做与Cocoa Touch和CoreData对象类似的东西吗?

cocoa最接近的是“关键价值观察”。 在桌面Cocoa框架中,您可以使用绑定将用户界面元素挂钩到底层对象,以便对象或UI元素中的更改反映在另一个中。

虽然iOS上的Cocoa没有这种UI绑定,但您仍然可以使用“Key-Value Observing”将数据模型中的更改与UI元素同步,如下所述:

http://developer.apple.com/library/iOS/#documentation/General/Conceptual/Devpedia-CocoaApp/KVO.html

我写了一个小的开源库,提供了一些简单的数据绑定function。 它基本上只是一个关键值观察(KVO)的包装。

GitHub上还有一些类似的库:

也许还应该提到Github的Reactive Cocoa ,一个用于组合和转换值序列的框架,一个.NET的Reactive Extensions(Rx)的Objective-C版本。

绑定机制可以非常简单地完成(从样本中):

// RACObserve(self, username) creates a new RACSignal that sends a new value // whenever the username changes. -subscribeNext: will execute the block // whenever the signal sends a value. [RACObserve(self, username) subscribeNext:^(NSString *newName) { NSLog(@"%@", newName); }]; 

不要忘记NSFetchedResultsController

不是一个完整的数据绑定控制器,但使表视图更容易与Core Data一起使用。

如果您使用的是Swift,请查看Bond框架: https : //github.com/ReactiveKit/Bond

绑定如下简单:

 textField.reactive.text.bind(to: label.reactive.text) 

它与function:

 textField.reactive.text .map { "Hi " + $0 } .bind(to: label.reactive.text) 

并提供简单的观察:

 textField.reactive.text .observeNext { text in print(text) } 

STV( http://sensiblecocoa.com )是一个可以在tableview中完成的框架

我使用斯坦福大学的CoreDataTableViewController为我的TableViewControllers。 它隐藏了很多你通常在TableViewController中实现的细节。

searchCoreDataTableViewController.h和.m将帮助你的道路上。 有几个版本可用的课程,最新的是ARC,旧的不。

为了同步NSManagedObject的标签和编辑字段,我仍然在寻找一个好的解决scheme。

是的,有一个数据绑定框架可以很好地集成到Interface Builder中,只需要很less的代码开销(如果有的话)。

看看https://github.com/mutech/aka-ios-beacon

编辑:你可以例如绑定一个表视图到一个抓取结果控制器,只需通过在接口生成器中将表视图的数据源绑定属性设置为:

[ yourResultsController ] { defaultCellMapping: "YourCellId" }

而你唯一要做的就是在视图控制器中定义一个属性yourResultsController

维基提供了一个相当完整的文档和很多示例用例。

    Interesting Posts