Blu*_*s23 6 rest model-view-controller nsnotificationcenter ios
我是iOS开发的新手,所以我很感激一些反馈.
我正在尝试为我的Web服务构建一个iOS客户端.到目前为止,这就是我所做的:
我正在实现两个视图(使用Storyboard的基于实用程序的应用程序).在主视图中,我使用文本字段和搜索按钮,用户可以在其中输入查询,然后单击搜索按钮.单击搜索按钮后,我的目的是读取文本字段的值,并在我对我的Web服务的Restful调用中使用它.我的Web服务使用带有查询结果的JSON文件回复,我将其解析并显示到辅助视图的文本区域.
我知道如何在iOS中进行restful调用以及如何进行JSON解析以及在屏幕上显示结果(至少是文本内容,但这是另一个不同的问题).但我的目的是为我的应用程序学习和实现MVC基础知识.
根据MVC,控制器更新视图,模型发出通知广播,控制器可以监听并知道对象是否有任何变化.所以这就是我理想的做法:
我的模型 - 我的模型将处理核心RESTful调用,获取JSON回复,解析它并获取我想在视图上显示的结果值.
我的控制器 - 我希望我的控制器听取我的模型并从模型中获取结果值并在View上显示它们.
使用快速和脏的方式,我可以实现RESTful调用,JSON解析和显示结果值 - 所有这些都在Controller内部,但是使用这种技术,如果我的视图明天改变,那么我必须重新编写代码.或者,如果我想添加新功能,那么我必须更改我的控制器.理想情况下,我希望有一个核心模型,它不知道View的样子,只需让Controller从模型中获取结果并在View上显示它们.
从我到目前为止从谷歌搜索结果中读到的,两种方法是a)关键价值观察和b)通知中心.
在过去的两天里,我试图找到一个很好的方式来实现通知中心或阅读更多相关信息,我没有得到很好的领导.我的一些问题是,我可以使用我的控制器选择的通知中心发送字符串结果值吗?通知中心如何真正使用字符串值?我在哪里可以找到一些好的例子?
所以对此有任何帮助将非常感谢.
Til*_*ill 12
我的一些问题是,我可以使用我的控制器选择的通知中心发送字符串结果值吗?
是的,这通常是使用a的userInfo属性完成的NSNotification.userInfo是一个普通的NSDictionary,可能包含NSObject由遵守NSCopying协议的密钥索引的派生对象的实例(通常NSString使用).请注意,dictionary(userInfo)将保留您的参数对象.
通知中心如何真正使用字符串值?
那么,这取决于你希望它如何工作.但是,除了挑剔,见下文.
我在哪里可以找到一些好的例子?
也许这个有帮助......
例
接收器(控制器)注册通知:
- (void)registerForNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(modelObjectUpdatedString:)
name:@"StringUpdated"
object:nil];
}
Run Code Online (Sandbox Code Playgroud)
发件人(模型)通知世界:
- (void)stringUpdateWith:(NSString *)theString
{
self.string = theString;
[[[NSNotificationCenter defaultCenter] postNotificationName:@"StringUpdated"
object:self
userInfo:[NSDictionary dictionaryWithObjectsAndKeys:self.string, @"String", nil]];
}
Run Code Online (Sandbox Code Playgroud)
接收者(控制器)在其处理程序中接收通知:
- (void)modelObjectUpdatedString:(NSNotification *)notification
{
ModelObject *postingObject = [notification object];
NSString *string = [[notification userInfo]
objectForKey:@"String"];
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4971 次 |
| 最近记录: |