标签: nsarray

如何将NSArray分成两个相等的部分?

我有一个NSArray,我想将它分成两个相等的部分(如果奇数"计数"然后添加到后一个新数组) - 我想把它分成"中间"可以这么说.

以下代码完全符合我的要求,但有更好的方法吗?:

// NOTE: `NSArray testableArray` is an NSArray of objects from a class defined elsewhere;
NSMutableArray *leftArray = [[NSMutableArray alloc] init];  
NSMutableArray *rightArray = [[NSMutableArray alloc] init];

for (int i=0; i < [testableArray count]; i=i+1) {
if (i < [testableArray count]/2) {
        [leftArray addObject:[testableArray objectAtIndex:i]];
    }
    else {
        [rightArray addObject:[testableArray objectAtIndex:i]];
    }
}
Run Code Online (Sandbox Code Playgroud)

一旦leftArray和rightArray被制作出来,我就不会改变它们,所以它们不需要是"可变的".我认为可能有一种方法可以使用ObjectsAtIndexes方法或一些快速枚举方法来完成上述代码?但是我无法使用以下代码(或其他变体):

NSArray *leftArray = [[NSArray alloc] initWithObjects:[testableArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(????, ????)]]];
NSArray *rightArray = [[NSArray alloc] initWithObjects:[testableArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(????, ????)]]];
Run Code Online (Sandbox Code Playgroud)

有没有人知道我是否朝着正确的方向前进或指向正确的方向?

谢谢!

objective-c nsmutablearray nsarray

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

得了一个EXC_CORPSE_NOTIFY符号崩溃,如何跟踪它?

这是整个崩溃日志.EXC_CORPSE_NOTIFY异常通知的含义是什么?

我必须更换一些关于我们公司的字符串.

Incident Identifier: 40BD3A10-43A5-4F0D-A283-218E1D3BEE46
CrashReporter Key:   3d8d75a8f5eeb7c3d28d52883b92ed4e0fb2529e
Hardware Model:      iPhone7,1
Process:             XxxxxXxxApp [13539]
Path:                /private/var/mobile/Containers/Bundle/Application/148C5049-8883-4E9D-BB98-5498EEA95191/XxxxxXxxApp.app/XxxxxXxxApp
Identifier:          com.Lotum.MCOLotumMobile
Version:             7.0.8.0 (7.0.8)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2016-01-15 11:22:25.25 +0800
Launch Time:         2016-01-15 10:41:58.58 +0800
OS Version:          iOS 9.2 (13C75)
Report Version:      105

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  16

Filtered syslog:
None found

Last Exception Backtrace:
0   CoreFoundation                  0x1840c5900 __exceptionPreprocess + 124
1   libobjc.A.dylib                 0x183733f80 objc_exception_throw …
Run Code Online (Sandbox Code Playgroud)

crash objective-c nsarray ios

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

从NSMutableArray获取唯一项目

我今天有一个关于Objective-C的问题涉及NSMutableArray.来自.net/c#背景我在处理这些事情时遇到了一些麻烦.

假设我有一个名为"Song"的对象

我的歌有3个属性:

  • 标题
  • 艺术家
  • 类型

我有一个NSMutableArray或NSArray,它拥有我所有的Song对象.

我将如何尝试"查询"我的阵列以获得仅具有(唯一)艺术家或流派的新阵列.

在.net中你会用DISTINCT子句编写一个简单的LINQ查询,如何在Objective-C中解决这个问题?我猜测谓词,但我很难找到解决方案.

提前致谢.

objective-c nsmutablearray nsarray

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

在objective-c中打印数组?

我需要检查NSArray动态存储的值.我应该如何在Objective-C中打印数组值?

objective-c nsarray

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

NSArray和bool值

NSArray可以保留一系列bool值吗?

以下代码运行

BOOL b = NO;
NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObject:[NSNumber numberWithBool:b]];

NSLog(@"value is %d", [array objectAtIndex:0] );
Run Code Online (Sandbox Code Playgroud)

但是,我没有像预期的那样得到0的值.相反,这就是我得到的

值是37736096

arrays cocoa-touch boolean objective-c nsarray

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

将非NSObject添加到NSMutableArray

最近的SO 讨论使我感到困惑.NSMutableArray原型addObject:是

- (void)addObject:(id)anObject
Run Code Online (Sandbox Code Playgroud)

并id在objc.h中定义为

typedef struct objc_class *Class;
typedef struct objc_object {
    Class isa;
} *id; 
Run Code Online (Sandbox Code Playgroud)

当我将一个NSObject或子类添加到一个时NSMutableArray,它的保留计数会递增,当我从中删除它时,NSMutableArray它会递减.这是否意味着如果一个id type不是一个NSObject或一个子类被添加到一个NSMutableArray,它必须响应保留和释放消息?这个定义id似乎并不强迫这一点.它是一个客观的C指令,任何人id type都应该响应标准的内存管理消息吗?

reference-counting objective-c foundation nsarray ios

13
推荐指数
1
解决办法
1110
查看次数

在NSUserDefaults中存储NSArray时,应用程序崩溃

我无法存储NSArray NsUserDefaults.该应用程序
在这一行中崩溃了 [savedData setObject:jsonValue forKey:@"JSONDATA"];

以下是我的代码.我在下面提到了我的日志错误

NSArray *jsonValue =[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSUserDefaults *savedData = [NSUserDefaults standardUserDefaults];
[savedData setObject:jsonValue forKey:@"JSONDATA"];
[savedData synchronize];
Run Code Online (Sandbox Code Playgroud)

错误日志:

*** Terminating app due to uncaught exception '`NSInvalidArgumentException`', reason: '*** -

[NSUserDefaults setObject:forKey:]: attempt to insert non-property list object <CFBasicHash 0x8c62b10 [0x1d2aec8]>{type = immutable dict, count = 3,
    entries =>
Run Code Online (Sandbox Code Playgroud)

objective-c nsuserdefaults nsarray ios

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

将由逗号分隔的NSString转换为NSArray

可能重复:
在Objective-C中将NSArray转换为NSString

我有一个NSArray myArray的数组,这里是内容:

 (
            "<MPConcreteMediaItem: 0x1b7dd0> 8671085923283003246",
            "<MPConcreteMediaItem: 0x1b7e50> 16275751483823231324",
            "<MPConcreteMediaItem: 0x1b7e70> 4976771456698615367"
 )
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码分配给NSString myString:

NSString *myString = [myArray description];
Run Code Online (Sandbox Code Playgroud)

而且输出仍然如预期:

 (
            "<MPConcreteMediaItem: 0x1b7dd0> 8671085923283003246",
            "<MPConcreteMediaItem: 0x1b7e50> 16275751483823231324",
            "<MPConcreteMediaItem: 0x1b7e70> 4976771456698615367"
 )
Run Code Online (Sandbox Code Playgroud)

现在,假设我想将myString转换回名为newArray的数组,我使用了这个:

NSArray *newArray = [[NSArray alloc]init];
newArray = [myString componentsSeparatedByString:@","];
Run Code Online (Sandbox Code Playgroud)

但是newArray的内容现在不同了:

(       
"(
    \"<MPConcreteMediaItem: 0x1b7dd0> 8671085923283003246\"",
        "
    \"<MPConcreteMediaItem: 0x1b7e50> 16275751483823231324\"",
        "
    \"<MPConcreteMediaItem: 0x1b7e70> 4976771456698615367\""
)"
) 
Run Code Online (Sandbox Code Playgroud)

知道我需要做些什么来解决这个问题吗?

objective-c nsstring nsarray ios

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

枚举数组 - 转换为NSArray

有

enum {MyA, MyB, Null};
typedef NSNumber myEnum;
Run Code Online (Sandbox Code Playgroud)

要么

typedef enum {MyA, MyB, Null} myEnum;
Run Code Online (Sandbox Code Playgroud)

1)如何创建数组

myEnum* myEnumTemp[] = {MyA, MyB};
Run Code Online (Sandbox Code Playgroud)

只是给 "Implicit conversion of 'int' to NSNumber* is disallowed with ARC(ref. counting)

2)如果你能够创建一个数组如何将其转换为NSArray?

enums objective-c nsarray

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

NSArray和CCArray之间的差异

NSArray和CCArray有什么区别?另外,在什么情况下,对于游戏编程,一个人会更喜欢另一个?

objective-c cocos2d-iphone nsarray

12
推荐指数
1
解决办法
1975
查看次数