当前位置:  开发笔记 > IOS > 正文

Objective-c关于NSString NSInteger和方法调用的问题

如何解决《Objective-c关于NSStringNSInteger和方法调用的问题》经验,为你挑选了1个好方法。

我喜欢通过传递一个值来创建一个自定义类的实例,该值在初始化时将帮助设置它.我已经覆盖了init并且实际上将其更改为:

- (id)initWithValue:(NSInteger *)initialValue;

我想将此值存储在实例化对象的属性中,并使用该值生成将与其关联的UIImage的文件名.

我的问题是如何在Cocoa/Obj-C中最好地解决这个问题.NSInteger是我需要的最佳参数还是NSString会更好?还是有其他设计模式?我不熟悉在这种情况下可以提供帮助的所有创作方法.假设我的类属性是:

@interface MyView : UIView {
UIImage *image;
NSInteger value;

如果我坚持使用NSInteger的作为参数,我可以轻松地分配给它.但是然后需要从该值生成"image12.png"(假设NSInteger = 12)来设置我的UIImage.像"image"+ initialValue +".png"之类的东西.我相信在Obj-C中详细表达如下:

NSString *myValue = @"image";
[myValue stringByAppendingString:[initialValue stringValue]]; //NSInteger may not respond to stringValue?!?
[myValue stringByAppendingString:@".png"]

这是我对Obj-C的理解破裂的地方.像这样的感觉应该更容易,但我仍然感到困惑.

现在,如果initialValue是一个值为@"12"的NSString,那么它可能是?那么self.value = [initialValue integerValue];

我可以用多个stringByAppendingString调用构建图像.对于其他语言中这么简单的事情来说,这似乎很乏味.

什么是处理这样的事情的最佳方法?



1> Tim..:

你的init方法看起来很好,如果你只处理整数值,你确实想要使用NSInteger而不是NSString甚至NSNumber.您可能想要更改的一件事是您传递的参数应该是(NSInteger),而不是(NSInteger *)- NSInteger不是对象,但在Objective-C中是类似的基本类型int.

您可以使用NSString的stringWithFormat:选择器构建映像名称,如下所示:

NSInteger myInteger = 12;
NSString *imageString = [NSString stringWithFormat:@"image%d.png", myInteger];

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有