2012-09-17 2 views
-1

PHP 배경의 누군가로이 질문을하고 있습니다. PHP에서 배열은 매우 간단합니다. $ numberArray = array ('minute'=> $ minute, 'hour'= $ hour)오브젝트가 아닌 다른 값으로 사전 작성

Obj-c/Cocoa에 들어가기 때문에, 있는 NSArray에만 저장 평면 배열,

NSMuteableArray *numberArray = [[NSMuteableArray init] alloc]; 
[numberArray insertObject:minute atIndex:0]; 
// not sure if above is correct, but it's a moot point 
// Creates a non-associate array (numberArray = '1', '2', '3', etc.) 

NSDictionary와 당신이 연관 배열을 만들 수 있습니다 것으로 나타났습니다 적이 있지만, 값은 오브젝트해야합니다. 여기서 값은 객체 이외의 무언가가 당신이 배열을 만들 수 있습니다 어떤 배열 또는 사전 형식 :

NSMuteableDictionary *numberArray = [[NSMuteableDictionary alloc] init]; 
[numberArray setObject:minute forKey:@"minutes"]; 
// numberArray creates array of ('minute'=>minuteObject, 'hour'=>hourObject, etc.) 

여기 내 질문? 나는 현재 시간의 분/시간을 잡아서 배열에 삽입하는 메소드를 만들려고하고있다. 그 메소드에서, 다른 곳에서 필요할 때이 메소드를 호출하여 키에서 적절한 값을 얻을 수 있습니다. 여기에 내 전체 코드는 : 내 가정의에서 틀렸다면

NSDate *now = [NSDate date]; 
NSCalendar *gregorianCal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *dateComps = [gregorianCal components: (NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate: now]; 
// Then use it 
NSUInteger minute = [dateComps minute]; 
NSUInteger hour = [dateComps hour]; 

NSMutableDictionary *timeArray = [[NSMutableDictionary alloc] init]; 
[timeArray setValue:minute forKey:@"minute"]; 

저를 수정하십시오. app dev에 익숙하지 않은 사람으로서, 이전의 진술은 "내가 옳다면, 틀렸어"보다 "지금까지 배웠던 것이고, 내가 틀렸다면 수정 해주세요"에 대한 것이었다.

+0

있는 NSArray, NSDictionary와 및 NSSet은 객체를 포함 할 수 있습니다 : 당신의 NSNumber를 푸는의 라인을 따라 뭔가가 필요에서 다시 NSUInteger를 얻으려면. 문서를 올바르게 읽었습니다. obj 컬렉션에서 저장 목적으로 비 객체 유형을 NSNumber로 변환하는 많은 방법이 있습니다. 또한 값에 C 배열을 직접 사용할 수 있습니다. –

답변

1

을, 컬렉션 많은 객체 지향 프레임 워크/언어 (그리고 PHP는 후드를하고있는 것과 유사)을 수행 할 수 있습니다 만 저장하는 객체. 프리미티브 값 유형을 저장하려면 해당 값을 객체로 래핑합니다. 숫자의 경우 클래스는 NSNumber입니다.

변경 마지막 라인 :

[timeArray setValue:[NSNumber numberWithUnsignedInteger:minute] forKey:@"minute"]; 

하고 작동합니다.

[[timeArray objectForKey:@"minute"] unsignedIntegerValue]; 
+0

당신이 답을 받아 들일 테니, 당신도 int로 다시 변환 할 방법을주었습니다. 부차적 인 질문으로, 더 많은 연구를 할 때,이 방법이 KVC (Key Value Coding) – user1667110

1

NSDictionary와 NSArray는 모두 객체를 저장합니다. 다른 사전 및 배열 포함.

안에 숫자를 넣으려면 NSNumber의 인스턴스에서 숫자를 "상자에"넣어야합니다.

코드가 잘못되었습니다. 당신이 할 필요가 : 공통의 코코아 프레임 워크와

[timeArray setValue:[NSNumber numberWithUnsignedInteger:minute] forKey:@"minute"]; 
+0

당신이 완전히 올바른 동안, CRD는 int로 다시 변환 할 수있는 방법을 제시했습니다. 도와 주셔서 감사합니다! – user1667110

+0

나 한테 의미가있어. – bbum

관련 문제