我知道这可以更快,但我没有多年的编码经验,所以我只是在努力学习......
我创建了一个函数,检查字符串是否不是“”,如果没有将它添加到nsurl然后我检查nsurl是否为nil并将其添加到可变数组中:
-(void)CheckUrls
{
self.items = [NSMutableArray array];
NSURL *URL1 ;
NSURL *URL2 ;
NSURL *URL3 ;
NSURL *URL4 ;
NSURL *URL5 ;
NSURL *URL6 ;
NSLog(@" FOTO 1: %@ \n FOTO2 : %@ \n FOTO 3 : %@ \n FOTO 4 : %@ \n FOTO 5: %@ \n FOTO 6: %@ \n",self.searchResult.foto1,self.searchResult.foto2,self.searchResult.foto3,self.searchResult.foto4,self.searchResult.foto5,self.searchResult.foto6);
if (![self.searchResult.foto1 isEqualToString:@""]) {
URL1 = [NSURL URLWithString:self.searchResult.foto1];
}
if (![self.searchResult.foto2 isEqualToString:@""]) {
URL2 = [NSURL URLWithString:self.searchResult.foto2];
}
if (![self.searchResult.foto3 isEqualToString:@""]) {
URL3 = [NSURL URLWithString:self.searchResult.foto3];
}
if (![self.searchResult.foto4 isEqualToString:@""]) {
URL4 = [NSURL URLWithString:self.searchResult.foto4];
}
if (![self.searchResult.foto5 isEqualToString:@""]) {
URL5 = [NSURL URLWithString:self.searchResult.foto5];
}
if (![self.searchResult.foto6 isEqualToString:@""]) {
URL6 = [NSURL URLWithString:self.searchResult.foto6];
}
if (URL1 !=NULL) {
[items addObject:URL1];
}
if (URL2 !=NULL) {
[items addObject:URL2];
}
if (URL3 !=NULL) {
[items addObject:URL3];
}
if (URL4 !=NULL) {
[items addObject:URL4];
}
if (URL5 !=NULL) {
[items addObject:URL5];
}
if (URL6 !=NULL) {
[items addObject:URL6];
}
此功能可以优化吗?
答案 0 :(得分:4)
NSArray* photosToCheck = [NSArray arrayWithObjects:
self.searchResult.foto1, self.searchResult.foto2, self.searchResult.foto3, self.searchResult.foto4, self.searchResult.foto5, self.searchResult.foto6, nil];
for (NSString* photo in photosToCheck) {
if (photo.length > 0) {
NSURL* photoUrl = [NSURL URLWithString:photo];
[items addObject:photoUrl];
}
}
但是,拥有名为foto1
,foto2
,......的属性会立即告诉我们应该使用数组来保存数据。
答案 1 :(得分:0)
如果您有6张照片,请保持原样
否则使用Urls数组,然后遍历它们。
答案 2 :(得分:0)
与空字符串进行比较相当于测试字符串是否为零长度。它在CPU时间方面不会节省太多,但至少更容易阅读。您也可以在设置URL时将URL存储在数组中,因此以后无需对其进行测试:
if ([self.searchResult.foto1 length] > 0) {
URL1 = [NSURL URLWithString:self.searchResult.foto1];
[items addObject:URL1];
}
if ([self.searchResult.foto2 length] > 0) {
URL2 = [NSURL URLWithString:self.searchResult.foto2];
[items addObject:URL2];
}
// etc.
如果你实际上没有使用URL1
等,你可以将它们直接放入数组中:
if ([self.searchResult.foto1 length] > 0) {
[items addObject:[NSURL URLWithString:self.searchResult.foto1]];
}
// etc.
答案 3 :(得分:0)
使self.searchResults成为一个NSArray of Strings,只要你给foto的值赋值,你就可以填充
循环有两种方法
for(NSInteger x = 0;x<100;x++)
将循环直到条件为假,在这种情况下x大于99或
for(NSObject *key in anArrayOfObjects)
将循环遍历数组中的每个对象
空检查总是一个好主意,(NSString *)将[NSNull null]类型转换为null NSString
url != (NSString *)[NSNull null]
您不需要中间NSURL,因为您已经知道foto值是空还是null,因此您可以立即将对象作为新的NSURL放入项目数组中
[items addObject:[NSURL URLWithString:url]];
最终代码
-(void)CheckUrls
{
self.items = [NSMutableArray array];
for(NSString *url in self.searchResult){
if( url != (NSString *)[NSNull null] && ![url isEqualToString:@""] ){
[items addObject:[NSURL URLWithString:url]];
}
}
}