Bac*_*alo -11 cocoa objective-c nsbundle nsmutablestring
似乎Objective C通过篮球跳跃使得看似简单的任务非常困难.
我只需要创建的字符串,序列image1.jpg
,image2.jpg
等等等等
即在一个循环中
var imgString:String='image'+i+'.jpg;
我假设最佳做法是使用NSMutableString
with appendString
方法?
我究竟做错了什么??
NSMutableString *imgString;
for(int i=1;i<=NUMIMAGES;i++){
imgString.appendString(@"image"+i+@".jpg");
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
错误:请求成员'appendString'不是结构或联合
bbu*_*bum 37
我不能想象如何产生的串image5image4image3image2image1.jpg
在string3
你的"答案"自己的问题可能会被理解为有用或溶液(我贴你的代码为基础的Xcode工具项目瓦特/设定为5 NUMIMAGES).
似乎Objective C通过篮球跳跃使得看似简单的任务非常困难.
阅读Objective-C指南和字符串编程指南,然后得出结论.批判你不理解的东西通常会适得其反(我们都已经做到了 - 但是当受挫时很容易做到).
我只需要创建一个字符串序列,image1.jpg,image2.jpg等
#define NUMIMAGES 5
NSMutableArray *fileNames = [NSMutableArray array];
for(int i = 0; i<5; i++)
[fileNames addObject: [NSString stringWithFormat: @"image%d.jpg", i]];
NSLog(@"fileNames %@", fileNames);
Run Code Online (Sandbox Code Playgroud)
输出:
fileNames (
"image0.jpg",
"image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg"
)
Run Code Online (Sandbox Code Playgroud)
请注意,天真的解决方案没有任何特别的错误.它比必要的更脆弱,效率更低,代码更多.
将所有图像作为资源添加到应用程序项目中.
使用NSBundle API一次性获取所有图像的URL.
即:
NSArray *paths = [[NSBundle mainBundle] pathsForResourcesOfType: @"jpg" inDirectory: nil];
Run Code Online (Sandbox Code Playgroud)
这不仅可以从代码中删除图像名称的硬编码,还可以让系统优化目录枚举和路径生成.如果你只想加载一部分图像 - 比如你正在编写游戏并拥有一系列与怪物相关的图像 - 那么将所有相关图像放在一个目录中,将目录添加到资源中,然后传递directory的名称作为上述方法的第二个参数.
所有这些 - 以及更多 - 都记录在资源编程指南中.
首先,您调用方法的语法是关闭的 - 我建议您阅读Apples Objective-C简介.值得注意的是,要调用方法,请使用[someObject someMethod]
语法.
接下来的问题是你永远不会创建你想要附加的字符串,你可以使用例如[NSMutableString string]
.
继续,将可变字符串与一些格式化字符串连接连接起来-appendFormat:
,例如:
NSMutableString *imgString = [NSMutableString string];
for (int i=1; i<=NUMIMAGES; i++) {
if (i > 1) [imgString appendString:@", "];
[imgString appendFormat:@"image%d.jpg", i];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5498 次 |
最近记录: |