如何以键值形式更改来自服务器的值?

时间:2014-05-12 05:35:16

标签: ipad

我想更改来自Web服务器的特定密钥的值。 我的代码是这样的

    NSMutableArray *forumTopicData = [[NSMutableArray alloc] init];

NSArray *columnArrayNames = [NSArray arrayWithObjects:@"user_id",@"class_id",@"role_id",   @"first_name",@"last_name",@"photo_image_url",@"email_address",@"webpage",@"home_phone",@"office_phone",@"cell_phone",@"aboutme",@"gender",@"is_online",@"role_title",@"display_name",nil];
[tempDict setObject:tempValue forKey:[columnArrayNames objectAtIndex:i]];                  //storing in array after getting from sqlite table


            [forumTopicData addObject:tempDict];

任何人都可以告诉我如何操纵来自服务器的键值对的值?

1 个答案:

答案 0 :(得分:0)

您不希望在应用内更改密钥。在服务器端的开发过程中,键名可以随时更改,当它们执行时,您的代码将会中断,您将发现自己正在搜索应用程序代码,试图修复每个键名。

正如Yogi雄辩地提到的那样,你想要创建一个继承自NSObject类的类,其中将有属性映射到键。您可以按此类的对象表示每个实体。

这是怎么做的。

第1步: 创建自定义数据模型,使数据管理更轻松,更清洁。 创建两个名为ForumTopicDataModel.hForumTopicDataModel.m的新文件。它们将是NSObject类的子类。

这就是您的.h文件的样子:

#import <Foundation/Foundation.h>

@interface ForumTopicDataModel : NSObject


/*
@"user_id", @"class_id", @"role_id", @"first_name", @"last_name", @"photo_image_url",
@"email_address", @"webpage", @"home_phone", @"office_phone", @"cell_phone", 
@"aboutme", @"gender", @"is_online", @"role_title", @"display_name"
*/

/*
Notice the naming convention used with a prefix of the class name. This make it easy to see all the properties of this particular class during text autocompletion when you are programming.
*/
@property (assign) NSInteger userId;
@property (assign) NSInteger userRoleId;
@property (nonatomic, retain) NSString * userFirstName;
//Do the same for the rest of the keys that you have.


-(id)initWithJSONData:(NSDictionary*)data;
@end

并在您的.m文件中,您将拥有以下内容:

#import "ForumTopicDataModel.h"

@implementation ForumTopicDataModel
@synthesize userId;
@synthesize userRoleId;
@synthesize userFirstName;
//Keep synthesising the rest

/*
This is where you explicitly write down the keys.
*/
-(id)initWithJSONData:(NSDictionary*)data{

    if (self = [super init]) {
        self.userId = [[data objectForKey:@"user_id"] integerValue];
        self.userRoleId = [[data objectForKey:@"role_id"] integerValue];
        self.userRoleId = [data objectForKey:@"first_name"];
        //continue for the rest of your keys
    }
    return self;
}
@end

我们这样做,因为它包含易于使用的容器。它也是管理自定义json对象的好方法。

第2步     现在,在视图控制器中,您将填充数据库并对数据进行分类,请确保导入自定义ForumTopicDataModel.h文件

NSMutableDictionary *myData = [[NSMutableDictionary alloc] init];

//Have a for loop that iterates through your array
for(NSDictionary *currentItem in serverArray){
    ForumTopicDataModel *newItem = [[ForumTopicDataModel alloc] initWithJSONData:currentItem];

    [myForumsArray addObject:newItem];
}

现在,只要您需要访问特定论坛的特定属性,只需访问要从ForumTopicDataModel对象检索的属性值的属性名称。这样做的好处在于它可以保持所有代码的清洁,并使代码易于调试。

那就是兄弟。古德勒克

免责声明,我还没有测试过此代码,但这应该可以直接使用:)