我收到错误NSInvalidArgumentException这是我的模型类
+(NSArray *)users
{
NSDictionary *user1 = @{@"username" : @"master photographer", @"email" : @"worldtravel@me.com", @"password" : @"drowssap", @"age" : @24, @"profilePicture" : [UIImage imageNamed:@"person1.jpeg"]};
NSDictionary *user2 = @{@"username" : @"Lots of tots", @"email" : @"otterskips@me.com", @"password" : @"icecreamrocks", @"age" : @65, @"profilePicture" : [UIImage imageNamed:@"person2.jpeg"]};
NSDictionary *user3 = @{@"username" : @"iTechie", @"email" : @"theRealApple@me.com", @"password" : @"infiniteloop", @"age" : @30, @"profilePicture" : [UIImage imageNamed:@"person3.jpeg"]};
NSDictionary *user4 = @{@"username" : @"Royal", @"email" : @"king@me.com", @"password" : @"IGotAPalace", @"age" : @0, @"profilePicture" : [UIImage imageNamed:@"person4.jpeg"]};
NSArray *userArray = @[user1, user2, user3, user4];
return userArray;
}
@end
这是我的viewdidload
self.users = [DMZUserData users];
NSLog(@"%@", self.users);
答案 0 :(得分:27)
错误意味着您试图将nil
放入字典中(不允许)。由于您使用字符串文字构建字典,因此不能nil
。这意味着您的一个或多个图像存在问题。
尝试此操作以帮助您找到问题:
+(NSArray *)users
{
UIImage *image1 = [UIImage imageNamed:@"person1.jpeg"];
UIImage *image2 = [UIImage imageNamed:@"person2.jpeg"];
UIImage *image3 = [UIImage imageNamed:@"person3.jpeg"];
UIImage *image4 = [UIImage imageNamed:@"person4.jpeg"];
NSDictionary *user1 = @{@"username" : @"master photographer", @"email" : @"worldtravel@me.com", @"password" : @"drowssap", @"age" : @24, @"profilePicture" : image1 };
NSDictionary *user2 = @{@"username" : @"Lots of tots", @"email" : @"otterskips@me.com", @"password" : @"icecreamrocks", @"age" : @65, @"profilePicture" : image2 };
NSDictionary *user3 = @{@"username" : @"iTechie", @"email" : @"theRealApple@me.com", @"password" : @"infiniteloop", @"age" : @30, @"profilePicture" : image3 };
NSDictionary *user4 = @{@"username" : @"Royal", @"email" : @"king@me.com", @"password" : @"IGotAPalace", @"age" : @0, @"profilePicture" : image4 };
NSArray *userArray = @[user1, user2, user3, user4];
return userArray;
}
现在您可以使用调试器,看看image1
,image2
,image3
或image4
是nil
还是添加NSLog
每个人的陈述。
请记住,文件名区分大小写,因此请确保传递给imageNamed:
的名称与实际文件名完全匹配。同时验证图片的扩展名为jpeg
,而不是jpg
。确保图像正在资源包中打包。
答案 1 :(得分:5)
你想要创造的其中一个UIImages是零。 请添加以下代码作为方法的第一行+(NSArray *)用户
NSAssert([UIImage imageNamed:@"person1.jpeg"] != nil, @"Person 1 image does not exist");
NSAssert([UIImage imageNamed:@"person2.jpeg"] != nil, @"Person 2 image does not exist");
NSAssert([UIImage imageNamed:@"person3.jpeg"] != nil, @"Person 3 image does not exist");
NSAssert([UIImage imageNamed:@"person4.jpeg"] != nil, @"Person 4 image does not exist");
该代码片段将在控制台上打印出哪些图像不存在。 请在DEBUG上运行,让我们看看断言的结果是什么。
希望这有帮助!
答案 2 :(得分:2)
更好的治疗可能是制作" NSDictionary"像这样:
NSDictionary *user1 = [NSDictionary dictionaryWithObjectsAndKeys: my obj & key here, nil];
答案 3 :(得分:2)
" 尝试从对象中插入nil对象[4] "表示索引[4]中的键或值为零。
因为其他人已经说过这将是你的一个图像,因为索引[4]的键是一个字符串文字。
答案 4 :(得分:1)
这意味着您尝试放入该字典中的一个值为零,很可能是其中一个图片。您可以尝试将图像分配给变量并检查它们以查看是否是这种情况。