好吧,我已经看过网站上的类似问题,但到目前为止还没有达成解决方案,所以我一定做错了.
基本上,我正在导入一个文本文件,然后将每一行拆分为一个数组元素.由于文本文件将被更新等.我不会每个人都知道文件中的确切行数以及数组中的元素数量.我知道在Java中你可以做.length()等..并且据说在Objective C你可以使用'count'但我没有运气返回我的数组的长度...建议?
Run Code Online (Sandbox Code Playgroud)NSString *filePath = [[NSBundle mainBundle] pathForResource:@"allshows" ofType:@"txt"];
NSString *fileString = [NSString stringWithContentsOfFile:filePath];
NSArray *lines = [fileString componentsSeparatedByString:@"\n"];
NSUInteger *elements = [lines count];
NSLog(@"Number of Shows : ", elements);
Run Code Online (Sandbox Code Playgroud)
什么是输出是没有的.如"节目数:" - 空白,就像它根本没有计算一样.
感谢您的任何帮助!
字典和数组之间有什么区别,特别是在使用PLIST文件时?使用一个优于另一个有什么好处?谢谢!
在(已经)排序上进行二进制搜索的最简单方法是什么NSArray?
到目前为止我发现的一些潜在方法包括:
CFArrayBSearchValues(这里提到) - 这会起作用NSArray吗?该方法indexOfObject:inSortedRange:options:usingComparator:的NSArray假定数组进行排序,并采取一种opts类型的PARAM NSBinarySearchingOptions-这意味着它执行二进制搜索?该文档只是说:
返回对象的指定范围内的索引与使用给定NSComparator块的数组中的元素进行比较.
编写我自己的二进制搜索方法(类似于此).
我应该补充一点,我正在为iOS 4.3+编程
提前致谢.
我有一个NSArray具有name属性的对象.
我想通过过滤数组 name
NSString *alphabet = [agencyIndex objectAtIndex:indexPath.section];
//---get all states beginning with the letter---
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", alphabet];
NSMutableArray *listSimpl = [[NSMutableArray alloc] init];
for (int i=0; i<[[Database sharedDatabase].agents count]; i++) {
Town *_town = [[Database sharedDatabase].agents objectAtIndex:i];
[listSimpl addObject:_town];
}
NSArray *states = [listSimpl filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误 - "不能用不是字符串的东西做一个子串操作(lhs = <1,箭头> rhs = A)"
我怎样才能做到这一点?我想过滤数组中的第一个字母name为'A'.
我有一个for循环.在那个循环里面,我想填充NSArray一些对象.但我没有看到任何让我这样做的方法.我事先知道有多少物品.我想避免使用NSMutableArray,因为有些人告诉我这是一个非常大的开销和性能制动相比NSArray.
我有这样的事情:
NSArray *returnArray = [[NSArray alloc] init];
for (imageName in imageArray) {
UIImage *image = [UIImage imageNamed:imageName];
//Now, here I'd like to add that image to the array...
}
Run Code Online (Sandbox Code Playgroud)
我查看了文档NSArray,但是如何指定那里有多少元素?或者我必须真的用NSMutableArray它吗?
我有以下代码,我想使用NSMutable数组而不是NSArray你能告诉我如何加载NSMutable数组,因为当前的方法不起作用.
-(void) whatever{
NSData *htmlData = [[NSString stringWithContentsOfURL:[NSURL URLWithString: @"http://www.objectgraph.com/contact.html"]] dataUsingEncoding:NSUTF8StringEncoding];
TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlData];
NSArray *titles = [xpathParser search:@"//h3"]; // get the page title - this is xpath notation
TFHppleElement *title = [titles objectAtIndex:0];
NSString *myTitles = [title content];
NSArray *articles = [xpathParser search:@"//h4"]; // get the page article - this is xpath notation
TFHppleElement *article = [articles objectAtIndex:0];
NSString *myArtical = [article content];
Run Code Online (Sandbox Code Playgroud)
我试过了 :
NSMutableArray *titles = [xpathParser search:@"//h3"];
Run Code Online (Sandbox Code Playgroud)
但它确实加载了这些值?
我正在尝试对填充了自定义对象的NSArray进行排序.每个对象都有一个startDateTimeNSDate类型的属性.
以下代码生成一个数组sortedEventArray,已填充但未排序.我是以完全错误的方式解决这个问题,还是我错过了一些小事?
NSSortDescriptor *dateDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray sortedArrayUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud) 我有两个共享一些共同元素的NSArrays A和B,例如
A: 1,2,3,4,5
B: 4,5,6,7
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的NSArray,它包含两个NSArrays之间共同的内容,它们与第二个NSArray的内容相连,同时保持元素的顺序并删除重复项.也就是说,我想(A∩B)∪B.
以前的NSArrays上的操作将产生:
A ? B: 4,5
(A ? B) ? B: 4,5,6,7
Run Code Online (Sandbox Code Playgroud)
我如何在Objective-C中实现这一目标?
我已经阅读了帖子中深拷贝和浅拷贝之间差异的答案,深拷贝和浅拷贝有什么区别?.现在我有点怀疑当我们做了一个浅的副本
newArray = [NSmutableArray arrayWithArray:oldArray];
Run Code Online (Sandbox Code Playgroud)
新数组将指向oldArray.(如图所示).现在当我从newArray中删除对象时会发生什么?如图所示,它应该从oldArray中移除相同的元素!这好像是
newArray = oldArray是浅拷贝,newArray = [NSmutableArray arrayWithArray:oldArray];是深拷贝.这样对吗?
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"Sample.png"];
[self.view addSubview:imageView];
NSArray *subviews = [self.view subviews];
for(id element in subviews) {
if ([[element class] isKindOfClass:[UIImageView class]]) //check if the object is a UIImageView
{
NSLog(@"element is a UIImageView\n");
[element setCenter:CGPointMake(500., 500.)];
} else {
NSLog(@"element is NOT a UIImageView\n");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期望输出为"元素是UIImageView,但实际上元素不是UIImageView.为什么?不是有其他子视图.只有一个.此外,运行时,图像显示为100,100,而不是500,500正如所料.
nsarray ×10
objective-c ×8
ios ×5
iphone ×2
algorithm ×1
cocoa ×1
cocoa-touch ×1
count ×1
filter ×1
nsdate ×1
nsdictionary ×1
plist ×1
set-theory ×1
sorting ×1
uiimageview ×1
uikit ×1
union ×1
xcode ×1