标签: nsmutablearray

mutableArrayValueForKey的KVC搜索模式是什么?

我试图更好地理解Cocoa的键值编码(KVC)机制.我已经阅读了Apple的Key-Value Programming Guide,但对于某些KVC方法如何搜索密钥仍然有点困惑.特别是mutableArrayValueForKey : .

下面我将解释我如何理解valueForKey:KVC"getters"的工作方式.然后我将讨论有关mutableArrayValueForKey的问题.


有七种不同的"getter"KVC方法:

- (id)valueForKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys;
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key;
- (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath;
- (NSMutableSet *)mutableSetValueForKey:(NSString *)key;
- (NSMutableSet *)mutableSetValueForKeyPath:(NSString *)keyPath;
Run Code Online (Sandbox Code Playgroud)

在Property中搜索Value(名为myKey)时,Apple的文档声明valueForKey:这样搜索:

  1. 在接收器内尝试-getMyKey,-myKey和-isMyKey(按此顺序)
  2. 如果没有找到,它会尝试这些有序的,多对多的getter(NSArray):

    // Required:
    - (NSUInteger)countOfMyKey;
    
    // Requires At Least One:
    - (id)objectInMyKeyAtIndex:(NSUInteger)index;
    - (NSArray *)myKeyAtIndexes:(NSIndexSet *)indexes;
    
    // Optional (improves performance):
    - (void)getMyKey:(KeyClass **)buffer range:(NSRange)inRange;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 接下来,它尝试这些无序的,多对多的getter(NSSet):

    - (NSUInteger)countOfMyKey;
    - (NSEnumerator *)enumeratorOfMyKey; …
    Run Code Online (Sandbox Code Playgroud)

cocoa key-value-coding nsmutablearray

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

从NSMutableArray中删除对象

我偶然发现了以下设置for循环的快捷方式(与我一直使用的教科书示例相比,快捷方式):

for (Item *i in items){ ... }
Run Code Online (Sandbox Code Playgroud)

与较长的格式相反:

for (NSInteger i = 0; i < [items count]; i++){ ... } //think that's right
Run Code Online (Sandbox Code Playgroud)

如果我使用较短的版本,有没有办法删除当前正在迭代的项目(即"我")?或者我需要使用更长的格式?

cocoa objective-c nsmutablearray

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

Cocoa结构和NSMutableArray

我有一个NSMutableArray,我正在尝试存储和访问一些结构.我该怎么做呢?'addObject'给我一个错误,说"addObject的参数1的不兼容类型".这是一个例子('in'是NSFileHandle,'array'是NSMutableArray):

//Write points
for(int i=0; i<5; i++) {
    struct Point p;
    buff = [in readDataOfLength:1];
    [buff getBytes:&(p.x) length:sizeof(p.x)];
    [array addObject:p];
}

//Read points
for(int i=0; i<5; i++) {
    struct Point p = [array objectAtIndex:i];
    NSLog(@"%i", p.x);
}
Run Code Online (Sandbox Code Playgroud)

cocoa struct nsmutablearray

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

检查NSArray是否包含一些int

我有一个NSMutableArray的NSNumbers.基本上我只是想检查NSNumbers数组中是否有任何值=某个值.

我可以遍历数组,逐个检查,这绝不是最佳选择.

我也试过并且使用失败containsObject,因为这只有在id相同的情况下才有效.

我读了一些关于NSPredicate这个问题的解决方案,但我不确定如何使用它NSArray.

任何答案都表示赞赏.

谢谢

objective-c nsnumber nsmutablearray nspredicate

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

检查数组是否包含某个对象(iOS)

我需要检查某个数组是否包含某个对象,如果是,则删除该对象.如果它没有那个对象,则可以使用函数将其添加到数组中.问题是始终添加对象,因为检查语句始终返回false.

这是我目前的功能:

- (void) myFunction:(NSString *)parameter {

    if (![myMutableArray containsObject:parameter]) {

        [myMutableArray addObject:parameter];
        NSLog(@"%@ added", parameter);

    } else {

        [myMutableArray removeObject:parameter];
        NSLog(@"%@ deleted", parameter);

    }
}
Run Code Online (Sandbox Code Playgroud)

arrays objective-c nsmutablearray ios

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

从NSMutableArray中删除对象时崩溃

在我的iphone项目(启用ARC)中,我有一个nsmuatble数组,其中包含大约5个托管对象(从核心数据中检索),在某些情况下,我需要从中删除所有对象nsmutablearray

我使用了以下方法来删除对象,但在崩溃日志的两种情况下它都崩溃了 -[__NSArrayI removeObject:]: unrecognized selector sent to instance 0xa391640

if (surveys && [surveys count]>0)
        {

            [surveys removeAllObjects];
            surveys = [[NSMutableArray alloc]init];
        }
Run Code Online (Sandbox Code Playgroud)

我也试过

if (surveys && [surveys count]>0)
        {
            for(Survey *obj_Survey in surveys)
            {
                [surveys removeObject:obj_Survey];
            }

            surveys = [[NSMutableArray alloc]init];
        }
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何清空该阵列,任何建议都会被提前感谢

iphone objective-c nsmutablearray removeall ios

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

如何在swift中的NSMutableArray中将对象添加为NSMutableArray

我想addObject的NSMutableArray到NSMutableArray,所以我怎么能在迅速实现这一目标.并检索它,所以请帮助我,因为现在我正在迅速学习.

间接地说,我想二维数组手段NSMutableArray的NSMutableArray.

//The below 2 lines iterative!
var dict:NSMutableDictionary? = NSMutableDictionary();
 linePointsArray!.addObject(dict!);

// and below 2 line is execute after complete the above iteration
 arrLine!.addObject(linePointsArray!);
 linePointArray!.removeAllObject();

//after that the above whole process is done iterative.
Run Code Online (Sandbox Code Playgroud)

nsmutablearray ios swift

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

如何动态填写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万
查看次数

如何在NSMutableArray上添加观察者?

我搜索了很多,但没有找到有用的代码或教程.

在我的应用程序中,我有一个可变数组,每60秒更新一次.

数组中的对象由多个视图控制器中的表视图显示.

我只想在数组中的值更改或更新时自动重新加载表视图.

为此,我想在可变数组上添加观察者,即当数组中的值发生变化时,它应该调用特定的方法,例如

-(void)ArrayUpdatedNotification:(NSMutableArray*)array
{
    //Reload table or do something
} 
Run Code Online (Sandbox Code Playgroud)

提前致谢.

iphone objective-c uitableview nsmutablearray

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