标签: nsmutablearray

NSMutableArray只将Object添加为指针?

我有这个小代码

 NSMutableArray *myArray = [[NSMutableArray alloc] init]; 
 NSNumber *myNumber = [NSNumber numberWithDouble:752.65];

 [myArray addObject:myNumber];
Run Code Online (Sandbox Code Playgroud)

使用此代码,我将对象存储在数组中.但是现在我有两个彼此独立的对象.

如果我在将myNumber添加到数组后更改它,则数组内的值不会更改.我该如何存档?我试图只给出一个指向数组的指针,但它没有用.

cocoa objective-c nsnumber nsmutablearray

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

快速枚举使用包含NSDictionary的NSMutableArray

是否可以对包含NSDictionary的NSArray使用快速枚举?

我正在浏览一些Objective C教程,以下代码将控制台踢入GDB模式

NSMutableArray *myObjects = [NSMutableArray array];
NSArray *theObjects = [NSArray arrayWithObjects:@"easy as 1",@"easy as two", @"Easy as Three"];
NSArray *theKeys    = [NSArray arrayWithObjects:@"A",@"B",@"C"];    
NSDictionary *theDict = [NSDictionary dictionaryWithObjects:theObjects forKeys:theKeys];
[myObjects addObject:theDict];

for(id item in myObjects)
{
    NSLog(@"Found an Item: %@",item);
}
Run Code Online (Sandbox Code Playgroud)

如果我用传统的计数循环替换快速枚举循环

int count = [myObjects count];
for(int i=0;i<count;i++)
{
    id item;
    item = [myObjects objectAtIndex:i];
    NSLog(@"Found an Item: %@",item);
}
Run Code Online (Sandbox Code Playgroud)

应用程序在没有崩溃的情况下运行,字典将输出到控制台窗口.

这是Fast Enumeration的限制,还是我错过了一些语言的巧妙?嵌套这样的集合时还有其他陷阱吗?

对于奖励积分,我如何使用GDB自行调试?

cocoa enumeration objective-c nsdictionary nsmutablearray

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

对包含2种对象的NSmutableArray进行排序?

我有一个NSMutableArray,包含两种类型的对象.

两个对象都包含一个具有不同名称的日期字段(具有不同格式的日期字符串).

什么是根据日期对它们进行排序的最佳和最快的方法?NSSortDescriptor在这种情况下是否可以使用?

objective-c nsmutablearray nssortdescriptor

5
推荐指数
1
解决办法
463
查看次数

5
推荐指数
1
解决办法
6473
查看次数

基于一个订购两个NSMutableArrays

我有两个NSMutableArrays.第一个的内容是数字的,它与第二个的内容配对:

First Array    Second Array
   45              Test45
   3               Test3
   1               Test1
   10              Test10
   20              Test20
Run Code Online (Sandbox Code Playgroud)

这就是两个阵列的外观.现在我怎么能这么数量地命令它们最终如下:

First Array    Second Array
   1               Test1
   3               Test3
   10              Test10
   20              Test20
   45              Test45
Run Code Online (Sandbox Code Playgroud)

谢谢!

cocoa nsmutablearray ios

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

如何将NSTimeInterval值存储到NSMutableArray中?

我有一个要求,我有一个使用的视频MPMediaPlayerController.除了视频我还有两个按钮,我需要在点击按钮时捕获当前的播放时间并单独存储所有相关的点击.我可以使用返回的"currentPlaybackTime"属性获取视频的当前播放时间NSTimeInterval.但有人可以帮助我如何将所有NSTimeInterval值存储到一个NSMutableDictionary.我尝试了以下方法:

-(void)onClickOfGood {
    NSLog(@"The current playback time in good:%g",moviePlayerController.currentPlaybackTime);
    currentPlaybackTime = moviePlayerController.currentPlaybackTime;
    //NSArray *arrayContainsGoodClicks = [[NSArray alloc]initWithObjects:currentPlaybackTime, nil ];
    NSNumber *goodTimeIntervals = [NSNumber numberWithDouble:currentPlaybackTime];
    NSMutableArray *arrayContainsGoodClicks = [[NSMutableArray alloc]initWithObjects:goodTimeIntervals,nil ];
    NSLog(@"The total count of Array is: %i",[arrayContainsGoodClicks count]);}
Run Code Online (Sandbox Code Playgroud)

但是每次点击好按钮后我都会将阵列计数仅为1.有人可以点亮我出错的地方吗?

iphone objective-c nsmutablearray nstimeinterval ios5

5
推荐指数
1
解决办法
2858
查看次数

如何从NSMutableArray(iPhone)获得第一个值?

现在我在简单的iPhone应用程序的工作,我已经存储在一定的价值NSMutableArray一样 "{54.399, 196}","{-268.246, 273}".,所以我希望得到54.399的第一indexpath,如何得到这个,请帮助我

提前致谢

arrays iphone nsmutablearray ios

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

CFPropertyListCreateDeepCopy无法处理包含NSNull的数组/字典

出于某种原因,此示例代码有效:

NSArray *immutable = @[ @"a", @"b", @"c" ];
NSMutableArray *mutable = (__bridge  id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge  CFArrayRef)immutable, kCFPropertyListMutableContainers);
Run Code Online (Sandbox Code Playgroud)

并且此代码nil由于转换而产生:

NSArray *immutable = @[ @"a", [NSNull null], @"c" ];
NSMutableArray *mutable = (__bridge  id)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (__bridge  CFArrayRef)immutable, kCFPropertyListMutableContainers);
Run Code Online (Sandbox Code Playgroud)

我试图找到NSNull使用此功能时不允许的任何提及.我怀疑它与方法检查财产是否可变的方式有关,但我不能用事实来支持这一点.

有任何想法吗?

objective-c core-foundation nsmutablearray nsmutabledictionary

5
推荐指数
1
解决办法
668
查看次数

NSMutableArray removeLastObject Exception

根据NSMutableArray文档:

removeLastObjectNSRangeException如果数组中没有对象,则引发一个.

出于某种原因,我似乎能够在空数组上调用此方法,并且不会抛出任何异常.

这是一个测试用例:

- (void)testNSMutableArray
{
    NSMutableArray* arr = [[NSMutableArray alloc] init];
    STAssertTrue([arr count] == 0, @"Array count should be 0");
    STAssertThrows([arr removeLastObject], @"Should throw NSRangeException");
}
Run Code Online (Sandbox Code Playgroud)

这个测试用例在最后一行失败了,并带有以下消息:

[arr removeLastObject] raise(null).应抛出NSRangeException

我在这迷茫吗?文档错了吗?

cocoa-touch exception objective-c nsmutablearray

5
推荐指数
1
解决办法
717
查看次数

NSMutableArray中的addObject是复制还是保留?

当您将对象添加到集合中(例如)时NSMutableArray,对象是否被复制(即值语义)或被保留(即引用语义)?

我对示例感到困惑:

NSMutableString *testStr = [@"test" mutableCopy];
NSMutableArray *arrayA = [[NSMutableArray alloc] init];

[arrayA addObject:testStr];
NSLog(@"%@", arrayA);    // output: test

testStr = [@"world" mutableCopy];
NSLog(@"%@", arrayA);    // output: test

// testStr is copied - value semantics

NSMutableArray *testArr = [@[@1, @2] mutableCopy];
NSMutableArray *arrarB = [[NSMutableArray alloc] init];

[arrarB addObject:testArr];
NSLog(@"%@", arrarB);      // output: [1, 2]

[testArr addObject:@3];
NSLog(@"%@", arrarB);      // output: [1, 2, 3]

// testArr is retained - reference semantics
Run Code Online (Sandbox Code Playgroud)

您可以看到:如果对象是NSMutableString,则看起来对象已被复制-您更改对象将不会影响数组中的对象。

但是,如果对象是NSMutableArray,则在更改对象时,数组中的对象也会更改-就像保留对象或通过引用传递一样。 …

objective-c nsmutablearray ios

5
推荐指数
1
解决办法
3894
查看次数