标签: nsarray

获得NSArray长度/计数 - 目标C.

好吧,我已经看过网站上的类似问题,但到目前为止还没有达成解决方案,所以我一定做错了.

基本上,我正在导入一个文本文件,然后将每一行拆分为一个数组元素.由于文本文件将被更新等.我不会每个人都知道文件中的确切行数以及数组中的元素数量.我知道在Java中你可以做.length()等..并且据说在Objective C你可以使用'count'但我没有运气返回我的数组的长度...建议?

 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"allshows" 
                                                     ofType:@"txt"];
Run Code Online (Sandbox Code Playgroud)
 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)

什么是输出是没有的.如"节目数:" - 空白,就像它根本没有计算一样.

感谢您的任何帮助!

xcode objective-c count nsarray

16
推荐指数
2
解决办法
5万
查看次数

字典和数组之间有什么区别?

字典和数组之间有什么区别,特别是在使用PLIST文件时?使用一个优于另一个有什么好处?谢谢!

objective-c nsdictionary plist nsarray ios

16
推荐指数
1
解决办法
2万
查看次数

如何在NSArray上执行二进制搜索?

在(已经)排序上进行二进制搜索的最简单方法是什么NSArray?

到目前为止我发现的一些潜在方法包括:

  1. 使用CFArrayBSearchValues(这里提到) - 这会起作用NSArray吗?
  2. 该方法indexOfObject:inSortedRange:options:usingComparator:的NSArray假定数组进行排序,并采取一种opts类型的PARAM NSBinarySearchingOptions-这意味着它执行二进制搜索?该文档只是说:

    返回对象的指定范围内的索引与使用给定NSComparator块的数组中的元素进行比较.

  3. 编写我自己的二进制搜索方法(类似于此).

我应该补充一点,我正在为iOS 4.3+编程

提前致谢.

algorithm objective-c binary-search nsarray ios

16
推荐指数
2
解决办法
9857
查看次数

按字符串属性的第一个字母过滤数组

我有一个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'.

cocoa-touch objective-c filter nsarray ios

16
推荐指数
2
解决办法
4万
查看次数

如何动态填写NSArray?

我有一个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它吗?

iphone objective-c uikit nsmutablearray nsarray

15
推荐指数
1
解决办法
4万
查看次数

来自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)

但它确实加载了这些值?

objective-c nsmutablearray nsarray ios

15
推荐指数
3
解决办法
3万
查看次数

按NSDate属性对自定义对象的NSArray进行排序

我正在尝试对填充了自定义对象的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)

sorting cocoa objective-c nsdate nsarray

15
推荐指数
3
解决办法
2万
查看次数

通过交叉和联合组合NSArrays

我有两个共享一些共同元素的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中实现这一目标?

union set-theory objective-c nsarray

15
推荐指数
3
解决办法
1万
查看次数

深拷贝和浅拷贝

我已经阅读了帖子中深拷贝和浅拷贝之间差异的答案,深拷贝和浅拷贝有什么区别?.现在我有点怀疑当我们做了一个浅的副本

 newArray = [NSmutableArray arrayWithArray:oldArray];
Run Code Online (Sandbox Code Playgroud)

新数组将指向oldArray.(如图所示).现在当我从newArray中删除对象时会发生什么?如图所示,它应该从oldArray中移除相同的元素!这好像是

newArray = oldArray是浅拷贝,newArray = [NSmutableArray arrayWithArray:oldArray];是深拷贝.这样对吗?

iphone nsarray

15
推荐指数
2
解决办法
2万
查看次数

使用isKindOfClass:我不明白为什么这段代码的表现方式如此

-(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正如所料.

uiimageview nsarray ios

15
推荐指数
1
解决办法
2万
查看次数