首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSInvalidArgumentException',reas-[__NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从objects[4]插入零对象

NSInvalidArgumentException',reas-[__NSPlaceholderDictionary initWithObjects:forKeys:count:]:尝试从objects[4]插入零对象
EN

Stack Overflow用户
提问于 2014-04-25 16:39:07
回答 5查看 37.6K关注 0票数 27

我出错了,NSInvalidArgumentException,这是我的模型类

代码语言:javascript
运行
复制
+(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

这是我的观点

代码语言:javascript
运行
复制
self.users = [DMZUserData users];
NSLog(@"%@", self.users);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-04-25 16:57:18

此错误意味着您正在尝试将nil放入字典(不允许)。因为您正在用字符串文字构建字典,所以不可能是nil。这意味着问题在于您的一个或多个图像。

试试这个来帮助找出问题所在:

代码语言:javascript
运行
复制
+(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;
}

现在,您可以使用调试器,查看image1image2image3image4nil还是为每个nil添加NSLog语句。

请记住,文件名是区分大小写的,所以请确保传递给imageNamed:的名称与真正的文件名完全匹配。还要验证图像是否具有扩展jpeg,而不是jpg。确保映像正在打包在资源包中。

票数 28
EN

Stack Overflow用户

发布于 2014-04-25 16:59:42

您要创建的UIImages之一是零。请添加以下代码作为方法+(NSArray *)用户的第一行

代码语言:javascript
运行
复制
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");

这段代码片段将在控制台上打印不存在的图像。请在调试时运行,让我们看看断言的结果是什么。

希望这能有所帮助!

票数 5
EN

Stack Overflow用户

发布于 2014-07-14 23:29:20

更好的解决方法可能是让"NSDictionary“像这样:

代码语言:javascript
运行
复制
NSDictionary *user1 = [NSDictionary dictionaryWithObjectsAndKeys: my obj & key here, nil];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23298615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档