我正在尝试使用 NSMutableSet 创建一组对象。对象是一个标签,每个标签都有一个id和一个名字。
标签类的定义如下:
#import "Tag.h"
@implementation Tag
@synthesize id, name;
+(id) populateTagObjectWithId:(NSString *)id andName:(NSString *)name
{
Tag *myTag = [[self alloc] init];
myTag.id = id;
myTag.name = name;
return myTag;
}
... remainder of code snipped out
在我的应用程序的其他地方,我使用 SQLite 来获取 TAG 表中的标签。我使用 while 循环进行迭代,对于每次迭代,我构建一个标记对象,然后尝试将其添加到集合中。下面的代码:
... previous code snipped out...
NSMutableSet *thisTagSet;
while(sqlite3_step(tag_statement) == SQLITE_ROW)
{
NSString *thisTagId = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(tag_statement, 0)];
NSString *thisTagName = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(tag_statement, 1)];
[thisTagSet addObject:[Tag populateTagObjectWithId:thisTagId andName:thisTagName]];
... rest of code snipped out...
因此,正如我所提到的,当我遍历这个 while 循环时,我得到了正在填充的对象及其 id 和名称(我已经通过检查调试器并使用 NSLog 确认了这一点)。然而,即使我使用 addObject 方法,thisTagSet NSMutableSet 仍然为空。我在这里做错了吗?我也试过像这样分开两个步骤:
Tag *thisTagObject = [Tag populateTagObjectWithId:thisTagId andName:thisTagName];
[thisTagSet addObject:thisTagObject];
同样的结果。我成功获得了 thisTagObject,但 thisTagSet 中没有任何内容...