If / Else语句破坏循环

布赖恩

我现在很茫然,我似乎无法弄清楚为什么我简单的if / else陈述打破了我的for循环。这两种方法保存和读取plist中的数据。注释文本时,一切都会正常进行。取消注释后,数据将无法保存(或无法正确读取)。

编辑:更新下面的代码以删除[NSNull null](更新的代码可以在下面看到)之后,我仍然有完全相同的问题。有任何想法吗?

另外,“ tab”是一个NSMutableArray。

- (void)saveDataToFile
{ 
// translate objects in to an nsarray that contains dictionaries so we can write

NSMutableArray *a = [NSMutableArray array];
for (int c = 0; c < [self.employeeList count]; c++) {
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    id r = [self.employeeList objectAtIndex:c];
    [dictionary setObject:[r username] forKey:@"username"];
    [dictionary setObject:[r passWord] forKey:@"passWord"];
    [dictionary setObject:[r employeeName] forKey:@"employeeName"];
    [dictionary setObject:[r email] forKey:@"email"];
    [dictionary setObject:[r phone] forKey:@"phone"];
    [dictionary setObject:[r hours] forKey:@"hours"];
//        if ([r tab] != nil) {
//        [dictionary setObject:[r tab] forKey:@"tab"];
//    }
    [dictionary setValue:[NSNumber numberWithFloat:[r tabTotal]] forKey:@"tabTotal"];
    [a addObject:dictionary];

    }

[a writeToFile:[self dataFileName] atomically:YES];
}

- (void)readDataFromFile
{
[self createEmployeeList];
NSArray *tempArray = [NSArray arrayWithContentsOfFile:[self dataFileName]];
for (int d = 0; d < [tempArray count]; d++) {
    Employee *person = [[Employee alloc] init];
    NSDictionary *dict = [tempArray objectAtIndex:d];
    [person setUsername:[dict objectForKey:@"username"]];
    [person setPassWord:[dict objectForKey:@"passWord"]];
    [person setEmployeeName:[dict objectForKey:@"employeeName"]];
    [person setEmail:[dict objectForKey:@"email"]];
    [person setPhone:[dict objectForKey:@"phone"]];
    [person setHours:[dict objectForKey:@"hours"]];
//        if ([dict objectForKey:@"tab"] == nil)  {
//            NSMutableArray *array = [[NSMutableArray alloc] init];
//            [person setTab:array];
//        }else {
//            [person setTab:[dict objectForKey:@"tab"]];
//        }

    [person setTabTotal:[[dict valueForKey:@"tabTotal"] floatValue]];

    [self.employeeList addObject:person];
    }


}
贝尔斯

您不能将NSNull值保存到词典文件中。您只能使用一组有限的类型,例如NSString,NSNumber,NSArray,NSDictionary。

保存时,不要将其设置为NSNull,而不必进行任何设置。

读取时,如果objectForKey:返回nil,则表示未设置任何此类键。

如果您真的想存储NSNull值,请看一下:如何序列化包含NSNull的NSDictionary / NSArray / Property List(plist)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章