今天我测试了使用firstObject和objectAtIndex:0.如果数组的大小为0,则使用前者不会导致崩溃,而后者会导致崩溃.所以我认为使用firstObject比使用objectAtIndex:0更好.但是在objectAtIndex:0上使用firstObject是否存在缺陷?
我也一直在阅读NSArray文档,我很惊讶并想知道为什么他们没有在文档中提到这个事实.
我有一个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) 基本上我有一个带键和值的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)
有任何想法吗?
谢谢
汤姆
对于我的应用程序,我试图将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?
我有一个大的NSArray名称,我需要从该数组中随机获得4条记录(名称),我该怎么做?
我有一个包含一些自定义对象的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)
由于它们不是同一个对象,但只有重复属性,我该如何删除副本?
我想创建一个子类,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)
谢谢.
我有一个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?
两者之间有区别吗?
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)
一个比另一个更受欢迎吗?
一个简单的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;
@endRun Code Online (Sandbox Code Playgroud)
是否有一种方法可以将var项:Array字段转换为Objective-c中的可变NSMutableArray?