试图追踪 JSON 字典值需要在哪里实现 iOS

Posted

技术标签:

【中文标题】试图追踪 JSON 字典值需要在哪里实现 iOS【英文标题】:Trying to Track Down Where JSON Dictionary Value Needs to Be Implemented iOS 【发布时间】:2013-12-05 22:27:50 【问题描述】:

我有以下方法创建图像的 URL:

-(NSURL*)urlForImageWithId:(NSNumber*)IdPhoto isThumb:(BOOL)isThumb 
NSString* urlString = [NSString stringWithFormat:@"%@/%@upload/%@%@.jpg",
                       kAPIHost, kAPIPath, IdPhoto, (isThumb)?@"-thumb":@""
                       ];
return [NSURL URLWithString:urlString];

我需要更新路径以包含与所述图像关联的IdUser 值。这是我尝试过的方式:

-(NSURL*)urlForImageWithId:(NSNumber*)IdPhoto isThumb:(BOOL)isThumb 
NSString* urlString = [NSString stringWithFormat:@"%@/%@upload/%@/%@%@.jpg",
                       kAPIHost, kAPIPath, IdUser, IdPhoto, (isThumb)?@"-thumb":@""
                       ];
return [NSURL URLWithString:urlString];

当我尝试这样做时,xcode 说“声明IdUser”,所以我这样做了。我将此添加到.h

@property (assign, nonatomic) NSNumber* IdUser;

我在下面的实现中添加了这个:

@synthesize IdUser;

但是当我运行程序时,我得到了IdUsernull 值。

当我这样记录字典时:

NSLog(@"Result from Stream: %@",json);

我得到以下输出:

result =     (
            
        IdPhoto = 5;
        IdUser = 7;
        title = this is the title;
        username = presto;
    );

作为一个例子。在这里,您可以清楚地看到 IdUser 值正在通过字典传递。我的猜测是来自-(NSURL*)urlForImageWithId:(NSNumber*)IdPhoto isThumb:(BOOL)isThumb IdPhoto 必须在其他地方定义。关于我应该寻找什么来追踪这个并能够将IdUser 值拉过来的任何想法?

【问题讨论】:

您在哪里解释 JSON 并设置属性? Objective-C 不是 Java,我们不喜欢那种花哨的杰克逊东西。您可以按照 &deity 的预期方式将 JSON 生成的字典中的值复制到您的对象中。 【参考方案1】:

仅添加一个属性并不会设置该属性的值。 self.IdUser 是在哪里发起的?听起来您将字典的键与 ViewController 属性混淆了。

试试这个看看是不是这样(在你得到NSArray命名的json之后做这个)。

NSDictionary *dict = [json objectAtIndex:0];
self.IdUser = [dict objectForKey:@"IdUser"];
NSLog(@"self.IdUser = %@", self.IdUser];

【讨论】:

我收到此错误消息no visible @interface for 'NSDictionary'... 发布您在原始帖子中拥有的该日志语句的实际结果。可能json是字典的字典。 我刚刚在我试图添加您的解决方案的地方添加了产生日志结果的方法。应该注意的是,这是在一个单独的 .m 文件中,我试图使用 IdUser 创建图像 url。让我知道是否有任何其他代码可以帮助解决这个问题。谢谢。 好的...我在这里的最后一步。请查看我最近的更新,因为您会看到我已经能够在同一个 .m 文件上以早期方法提取我需要的值。我只需要一种全局声明它并在lower方法中使用的方法。 我想通了...谢谢。由于您的解决方案为我指明了正确的方向,因此我授予您奖励。【参考方案2】:

如果idUser是实例变量,需要写成_IdUser或者self.IdUser。

还可以尝试: [_idUser stringValue] 在 NSString stringWithFormat 方法中获取正确的类型,因为您将其指定为字符串(“@”)。

【讨论】:

刚刚尝试过NSString* urlString = [NSString stringWithFormat:@"%@/%@upload/[_idUser stringValue]/%@%@.jpg",kAPIHost, kAPIPath,IdPhoto(isThumb)?@"-thumb":@""];,但这会杀死整个 URL。我可能误解了这个建议。 试试这个:NSString* urlString = [NSString stringWithFormat:@"%@/%@upload/%@/%@%@.jpg", kAPIHost, kAPIPath, [IdUser stringValue], IdPhoto, (isThumb)?@"-thumb":@"" ];

以上是关于试图追踪 JSON 字典值需要在哪里实现 iOS的主要内容,如果未能解决你的问题,请参考以下文章

在 ARKit 上应该使用哪种方法来实现最准确的世界追踪体验?

iOS 编程,获取 JSON 数据

在模板中显示 json 字典值

ios开发:如何取出json里面的字段值?

如何从 iOS 中的字典中获取值

用来自 JSON Request iOS 的字典填充 UITableView