标签: nsarray

firstObject vs objectAtIndex:0的方法用法有什么不同?

今天我测试了使用firstObject和objectAtIndex:0.如果数组的大小为0,则使用前者不会导致崩溃,而后者会导致崩溃.所以我认为使用firstObject比使用objectAtIndex:0更好.但是在objectAtIndex:0上使用firstObject是否存在缺陷?

我也一直在阅读NSArray文档,我很惊讶并想知道为什么他们没有在文档中提到这个事实.

nsarray ios

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

Plist数组到NSDictionary

我有一个plist:

<plist version="1.0">
  <array>
    <dict>
      <key>name</key>
      <string>Alabama</string>
      <key>abreviation</key>
      <string>AL</string>
      <key>date</key>
      <string>1819</string>
      <key>population</key>
      <string>4,627,851</string>
      <key>capital</key>
      <string>Montgomery</string>
      <key>largestCity</key>
      <string>Birmingham</string>
    </dict>
    <dict>
      <key>name</key>
      <string>Alaska</string>
      <key>abreviation</key>
      <string>AK</string>
      <key>date</key>
      <string>1959</string>
      <key>population</key>
      <string>683,478</string>
      <key>capital</key>
      <string>Juneau</string>
      <key>largestCity</key>
      <string>Anchorage</string>
    </dict>
    ...
  </array>
</plist>
Run Code Online (Sandbox Code Playgroud)

我试图将它加载到像这样的NSDictionary:

NSString *path = [[NSBundle mainBundle] pathForResource:@"stateInfo" ofType:@"plist"];

NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
    NSLog(@"The file exists");
} else {
    NSLog(@"The file does not exist");
}

NSMutableDictionary *myDic = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
//NSDictionary *myDic = [NSDictionary dictionaryWithContentsOfFile:path];
NSLog(@"The count: %i", [myDic count]); …
Run Code Online (Sandbox Code Playgroud)

objective-c nsdictionary plist nsarray

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

NSDictionary按键排序为浮点数

基本上我有一个带键和值的NSDictionary.

键都是数字,但目前它们是字符串.

我希望能够将它们作为数字进行比较,以便对它们进行排序.

例如:如果我有这样的词典:

{
  "100"  => (id)object,
  "20"   => (id)object,
  "10"   => (id)object,
  "1000" => (id)object,
}
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样对它进行排序:

{
  "10"   => (id)object,
  "20"   => (id)object,
  "100"  => (id)object,
  "1000" => (id)object,
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢

汤姆

iphone objective-c nsdictionary nsarray

11
推荐指数
2
解决办法
5174
查看次数

从数组中获取CGRect

对于我的应用程序,我试图将CGRect对象存储到NSMutableArray.它正在加载并在日志语句中打印,但尝试CGRect从数组中取出s会显示错误.这是一段代码:

CGRect lineRact = CGRectMake([[attributeDict objectForKey:@"x"] floatValue], 
  [[attributeDict objectForKey:@"y"] floatValue], 
  [[attributeDict objectForKey:@"width"] floatValue], 
  [[attributeDict objectForKey:@"height"] floatValue]);

  [lineRactangle addObject:NSStringFromCGRect(lineRact)];
Run Code Online (Sandbox Code Playgroud)

如何从阵列中取回rects?

objective-c nsarray ios cgrect

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

从nsarray获取n个随机对象(例如4)

我有一个大的NSArray名称,我需要从该数组中随机获得4条记录(名称),我该怎么做?

random objective-c nsarray ios

11
推荐指数
1
解决办法
4589
查看次数

NSArray:删除具有重复属性的对象

我有一个包含一些自定义对象的NSMutableArray.其中两个对象具有相同的属性,如标题和作者.我想删除重复的对象,然后离开另一个.

Asset *asset;
NSMutableArray *items = [[[NSMutableArray alloc] init] autorelease];

// First
asset = [[Asset alloc] init];
asset.title = @"Developer";
asset.author = @"John Smith";
[items addObject:asset];
[asset release];

// Second
asset = [[Asset alloc] init];
asset.title = @"Writer";
asset.author = @"Steve Johnson";
[items addObject:asset];
[asset release];

// Third
asset = [[Asset alloc] init];
asset.title = @"Developer";
asset.author = @"John Smith";
[items addObject:asset];
[asset release];
Run Code Online (Sandbox Code Playgroud)

由于它们不是同一个对象,但只有重复属性,我该如何删除副本?

objective-c nsarray ios

11
推荐指数
1
解决办法
4907
查看次数

方法调度中缺少哨兵

我想创建一个子类,NSMutableArray并需要覆盖该-initWithObjects:方法.

但如何调用[超级xxx];?

- (id) initWithObjects:(id)firstObj, ... {
    [super initWithObjects:firstObj]; // Error: Missing sentinel in method dispatch
    // Error: The result of a delegate init call must be immediately returned or assigned to "self"

}
Run Code Online (Sandbox Code Playgroud)

谢谢.

cocoa subclass objective-c nsarray

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

从NSArray中删除对象

我有一个ARC项目.

我NSArray内心有一些东西.在某些时候,我需要更改数组中的对象.

惠特NSMutableArray我会做的:

[array removeAllObjects];
Run Code Online (Sandbox Code Playgroud)

我确信这个方法会释放数组中包含的所有对象.但是对于NSArray我不能那样做!所以,我的问题是:如果我将数组设置为nil然后重新初始化它,那么数组中包含的旧对象是否真的从内存中释放出来?

array = nil;
array = [[NSArray alloc] initWithArray:newArray];
Run Code Online (Sandbox Code Playgroud)

或者我需要使用NSMutableArray?

release nsmutablearray nsarray ios automatic-ref-counting

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

使用@ [array,of,items] vs [NSArray arrayWithObjects:]

两者之间有区别吗?

NSArray *myArray = @[objectOne, objectTwo, objectThree];
Run Code Online (Sandbox Code Playgroud)

和

NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];
Run Code Online (Sandbox Code Playgroud)

一个比另一个更受欢迎吗?

objective-c nsarray objective-c-literals

11
推荐指数
1
解决办法
3287
查看次数

类型为var Array的Swift类字段将转换为不可变的NSArray而不是NSMutableArray

一个简单的Swift类有一个var array类型的字段.当类适应Objective-C时,字段类型公开为NSArray(不可变),而它应该是NSMutableArray(可变)

class Categoryy: NSObject {

    var items = Array<Item>()

}
Run Code Online (Sandbox Code Playgroud)

Classy swift类适用于Xcode生成的头文件MODULE_NAME-swift.h文件中的Objective-C,如下所示:

SWIFT_CLASS("_TtC8waiterio9Categoryy")
@interface Categoryy : NSObject
@property (nonatomic, copy) NSArray * items;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)

是否有一种方法可以将var项:Array字段转换为Objective-c中的可变NSMutableArray?

objective-c nsmutablearray nsarray swift xcode6

11
推荐指数
1
解决办法
1104
查看次数