【问题标题】:Why NSString says it is "Invalid", objC, IPhone?为什么 NSString 说它是“无效的”,objC,IPhone?
【发布时间】:2010-06-23 17:16:03
【问题描述】:

我有一个 ViewController, 我声明 NSString *xTitle 在 testViewController.m 文件的顶部

当我在 viewload 事件中设置 xTitle=@"anytext" 时; 然后我点击一个按钮,它会显示 UIActionsheet。

我尝试在 UIActionSheet 的 clickedButtonAtIndex 中读取 xTitle。 我看到 xTitle 的值“anytext”,没问题。

但是当我从 NSDictionary 设置 xTitle 时,它​​显示无效。

viewload 事件;

NSDictionary *results = [jsonString JSONValue];
xTitle  = [results valueForKey:@"ContentURL"];

NSLog(@"%@", xTitle);--> 它写入值 但我无法在 uiactionsheet 事件中读取 xTitle。它说无效。

为什么会显示“无效”?

【问题讨论】:

    标签: iphone nsstring nsdictionary objective-c


    【解决方案1】:

    由于您希望字符串比函数更有效,您可能需要这样做:

    xTitle = [[results valueForKey:@"ContentURL"] retain];
    

    当然还有release,在你完成之后的某个时间点。

    这不会影响您在使用 NSString 文字 @"anytext" 时,因为常量字符串基本上是静态的——也就是说,它们通常在代码的整个生命周期中都存在。您可以(也许在某种迂腐的意义上应该)retainrelease 这些,但它实际上对它们没有任何作用。

    (我对此的范围有点好奇——如果xTitle 声明在.m 文件的顶部,你如何在你的操作表中得到它——但我不知道'不认为这与这个问题有密切关系。)

    【讨论】:

    • 如果我给出值 xTitle=@"anytext" 或 xTitle = [results valueForKey:@"ContentURL"] 有什么区别?如果我设置 xtitle=@"anytext",它适用于每个事件。是的,保留作品。但我不明白为什么?
    • cas actionSheet clickedButtonAtIndex 在同一个 .m 文件中。
    • @tester 看到上面有些扩展的解释
    【解决方案2】:

    尝试做

    NSLog (@"%@", results);
    

    创建后直接查看字典中的确切内容。编辑以向我们展示字典中的内容。

    【讨论】:

    • { 评论数 = 15; ContentDeck = "Lorem Ipsum."; ContentURL = "/content/18888/lorem";内容 ID = 18888; ThumbnailURL = "media1.dummy.net///C/I//42/masada38_4ZK6T.jpg";视频网址 = ""; }
    • 我在 xTitle = [results valueForKey:@"ContentURL"]; 之后读取了值NSLog(@"%@", xTitle);但它没有显示不同事件中的值???
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多