【问题标题】:iOS 8: NSDictionary 0 key/value pairsiOS 8:NSDictionary 0 键/值对
【发布时间】:2014-09-16 10:13:00
【问题描述】:

信不信由你,这是真实的情况。我在我的应用程序中创建了一个简单的NSDictionary,它运行良好。今天我安装了Xcode 6 beta 并尝试在iOS 8 上运行我的应用程序。NSDictionary 返回0 key/value pairs 而我可以看到相同的字典在iOS 6 和iOS 7 中运行良好。这是该字典的代码,

NSDictionary *croppedPhoto = [[NSDictionary alloc] initWithObjectsAndKeys:myImageView.image,@"original",imageView.image,@"cropped", nil];  

注意: myImageViewimageView 都是 UIImageView,我可以在调试模式下看到图像。
我不知道iOS 8 是否有关于NSDictionary 的变化。提前感谢任何形式的帮助。谢谢。

【问题讨论】:

    标签: objective-c iphone nsdictionary ios8


    【解决方案1】:

    改成这段代码,看看会发生什么……

    NSDictionary *croppedPhoto = @{
        @"original" : myImageView.image,
        @"cropped"  : imageView.image
    };
    

    无论如何,您都应该使用这种格式。它已经存在 2 年了。

    此外,它还包括所有对象都不为零的运行时验证。

    如果myImageView.image 为 nil,那么您的代码将返回一个没有键或对象的字典,这种现代语法将崩溃,显示它为 nil。

    【讨论】:

    • 是的,myImageView.image 在我的情况下是零。感谢您指出这一点。
    • @iEngineer 好的。现在这样做...在 Xcode 中。转到编辑 - 重构 - 转换为现代 Objective-C 语法。这将更新您的所有代码以使用这样的更新语法。它将使它更具可读性并像这样帮助您。
    【解决方案2】:

    如果你使用现代语法,它会起作用吗?

    NSDictionary *croppedPhoto = @{
        @"original": myImageView.image,
        @"cropped":  imageView.image
    }
    

    (承认这一点,更具可读性)。

    【讨论】:

    • 因对象 [0] 的账单异常而崩溃;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    相关资源
    最近更新 更多