制作一个独特的属性

时间:2011-05-19 21:58:29

标签: objective-c xcode nsarraycontroller

我遇到制作独特属性的问题!

我已经在这里搜索过你们在XCode编程中创建一个独特属性的方法:

1: using if(![ARRAY containsObject:object]) ...

2: fetch Array with object and then if ([object count]>0) ... 

我的情况:

我有一个名为 userAccounts 的实体,其中包含2个属性: userName & passWord

我有一个 ArrayController ,它绑定到managedObjectContext并设置为Entity userAccounts

我有2个文本域名为 userNameTF passwordTF ,我想要的是找到 userNameTF 字符串值是否添加到< strong> UserAccounts 与否(建议的唯一性)。

问题是:
1. NSArrayController不支持containsObject方法
2.我无法将 userName 属性加载到Array以将其用于containsObject方法

我该怎么做才能解决这个问题?

非常感谢提前

1 个答案:

答案 0 :(得分:0)

您可以使用userNamearrangedObjects获取包含数组控制器中所有对象中valueForKey:属性值的数组:

NSArray *userNames = [[arrayController arrangedObjects] valueForKey:@"userName"];
if([userNames containsObject:@"theNewUsername"]) {
    // user name taken
} else {
    // user name available
}

如果要查找已具有用户名的对象,也可以使用indexOfObjectPassingTest:

NSArray *objects = [arrayController arrangedObjects];
NSUInteger index = [objects indexOfObjectPassingTest:^(id object, NSUInteger index, BOOL *stop) {
    if([[object valueForKey:@"userName"] isEqualToString:@"theNewUsername"]) {
        *stop = YES;
        return YES;
    }
    return NO;
}];
if(index == NSNotFound) {
    // user name available
} else {
    // user name taken by the object at "index" within "objects"
}