我有一个NSMutableArray,里面有30个字典.每个都包含名称和值.我目前已经对名称进行了排序,以便按字母顺序在表格视图中显示.但是,我想制作一个UIButton来提供仍然显示名称的选项,但是按照价值排序.不需要显示该值.另外,在.m/.h文件中放置这些代码的位置是什么?谢谢!
sorting objective-c nsdictionary nsmutablearray iphone-sdk-3.0
有人可以向我解释以下结果吗?
//generate an array with 4 objects
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
[NSNumber numberWithInt:1],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:3],
[NSNumber numberWithInt:4],
nil];
//release the array
[array release];
//get a count of the number of elements in the array
int count = [array count]; <--- count returns 4
Run Code Online (Sandbox Code Playgroud)
我的计数不应该是零吗?'release'不会从数组中删除所有元素吗?
我正在尝试对NSDictionaries的mutableArray进行排序,目前我可以通过使用一个objectForKey值进行排序来实现这一点,但是这个问题是很多这些值可以是相同的所以我需要让另一个objectForKey来对数组进行排序.我想知道,如果第一个objectForKey比较返回一个相同的值,我怎么能进行第二个objectForKey比较,依此类推......
目前我正在这样做,这有效..但显然只有一个键.
[dataArrayOfDictionaries sortUsingComparator:^ NSComparisonResult(NSDictionary *d1, NSDictionary *d2)
{
NSString *n1 = [d1 objectForKey:@"DESCRIPTION"];
NSString *n2 = [d2 objectForKey:@"DESCRIPTION"];
return [n1 localizedCompare:n2];
} ];
Run Code Online (Sandbox Code Playgroud)
在我的调查中,我试过这个 -
[dataArrayOfDictionaries sortUsingComparator:^ NSComparisonResult(NSDictionary *d1, NSDictionary *d2)
{
NSString *n1 = [d1 objectForKey:@"DESCRIPTION"];
NSString *n2 = [d2 objectForKey:@"DESCRIPTION"];
return [n1 localizedCompare:n2];
n1 = [d1 objectForKey:@"ID"];
n2 = [d2 objectForKey:@"ID"];
return [n1 localizedCompare:n2];
} ];
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用,因为它对描述排序然后完全使用基于ID,我想要它如果描述键是相同的然后通过ID键对这些值进行排序..如果这不起作用然后下去的列表键直到它排序..我希望这是有道理的..任何帮助将非常感激.
我一直在阅读一些关于订购NSMutable数组的帖子,但是在使用它时遇到了麻烦,本质上我在tableview中有很多条目,可以添加无限量,但是我需要通过包含NSMutable数组来排序它们数值,这将远远超过10.我真的很感激任何人可以给我的帮助,我一直在使用比较参数,但我似乎无法让它扭转顺序,其次我读了上面的数字10会以奇怪的方式开始排序.我很快就会发布代码,但是我要考虑的任何事情都会很棒.
谢谢
我有一个像这样的NSMutableArray:
(
{
City = "Orlando";
Name = "Shoreline Dental";
State = Florida;
},
{
City = "Alabaster ";
Name = Oxford Multispeciality;
State = Alabama;
},
{
City = Dallas;
Name = "Williams Spa";
State = Texas;
},
{
City = "Orlando ";
Name = "Roast Street";
State = Florida;
}
)
Run Code Online (Sandbox Code Playgroud)
现在,我如何对这个NSMutableArray进行排序,以获得与我希望获得的状态"佛罗里达"相对应的结果
(
{
City = "Orlando";
Name = "Shoreline Dental";
State = Florida;
},
{
City = "Orlando ";
Name = "Roast Street";
State = Florida;
} …Run Code Online (Sandbox Code Playgroud) 我认为,我正在做一个非常基本的错误,但我正在使用一个NSMutableArray,这不知何故不添加对象,我发送它的方式.我有一个属性(和合成)
@property (nonatomic, strong) NSMutableArray *kpiStorage;
Run Code Online (Sandbox Code Playgroud)
然后:
ExampleObject *obj1 = [[ExampleObject alloc] init];
[kpiStorage addObject:obj1];
ExampleObject *obj2 = [[ExampleObject alloc] init];
[kpiStorage addObject:obj2];
NSLog(@"kpistorage has:%@", [kpiStorage count]);
Run Code Online (Sandbox Code Playgroud)
并且总是在控制台中返回(null).我有什么误会?
我有一个包含多个NSMutableDictionary对象的数组.
每次填写文本字段并按下提交按钮:
//The strings
NSString *dateString = @"Date";
NSString *timeString = @"Time";
NSString *typeString = @"Type";
- (IBAction)addData:(id)sender {
[_myDictionary setObject:_dateLabel.text forKey:dateString];
[_myDictionary setObject:_nNumber.text forKey:timeString];
[_myDictionary setObject:_type.text forKey:typeString];
[_myArray addObject:_myDictionary];
[self display]
}
Run Code Online (Sandbox Code Playgroud)
然后我试图在UItextView中显示结果(在这个例子中是日期),但我不知道如何.
-(void)displayData{
for (int i = 0; i<_myArray.count; i++) {
[_myArray objectAtIndex:i];
outputString = [outputString stringByAppendingFormat:@"%@\n",[_myDictionary objectForKey:@"Date"]];
}
_myTextView.text = [NSString stringWithFormat:@"%@",outputString];
}
Run Code Online (Sandbox Code Playgroud)
这最终显示数组中最后一个Dictionary的日期.我甚至无法弄清楚如何从特定的字典中记录日期.
说[_myArray objectAtIndex:3] [_myDictionary objectForKey:@"Date"].我如何记录第三个索引的日期?
希望这是有道理的
EDIT SOLUTION
for (int i = 0; i<_myArray.count; i++)
{
outputString = [outputString stringByAppendingFormat:@"%@ …Run Code Online (Sandbox Code Playgroud) 我有一个NSMutableArray的UIViews,我把在UIScrollView其负责将它们按顺序.现在我有这个代码用于互换两个UIViews位置:
UIView *viewToBeChanged = [views objectAtIndex:self.page];
UIView *previousView = [views objectAtIndex:previousPage];
[views removeObjectAtIndex:self.page];
[views removeObjectAtIndex:previousPage];
[views insertObject:viewToBeChanged atIndex:previousPage];
[views insertObject:previousView atIndex:self.page];
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来改变NSMutableArray另一个对象的位置?谢谢!
我正在尝试使用从故事板构建的场景来构建应用程序的演练.
所以我填充了我的viewControllers数组,称为pages:
@interface PVCPagesViewController () {
NSMutableArray *pages;
}
@property (retain, nonatomic) NSMutableArray *pages;
@property (strong, nonatomic) UIPageViewController *pageController;
@end
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad()中:
self.pages = [[NSMutableArray alloc] init];
UIViewController *page1 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page1"];
UIViewController *page2 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page2"];
UIViewController *page3 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page3"];
UIViewController *page4 = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"page4"];
self.pages = [[NSMutableArray alloc] initWithObjects:page1, page2, page3, page4, nil];
Run Code Online (Sandbox Code Playgroud)
但是当我要在viewControllerAfterViewController()中从数组加载另一个视图控制器时:
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSInteger index = [self.pages indexOfObject:viewController];
index++;
return [self.pages objectAtIndex:index]; …Run Code Online (Sandbox Code Playgroud) 我想用
for (TBL_CardView *cardView in cardsInHand)
{
// <#statements#>
}
Run Code Online (Sandbox Code Playgroud)
TBL_CardView是我的自定义类,而且cardsInHand只是(TBL_CardViewArray*)
所以我需要countByEnumeratingWithState:objects:count:为我的TBL_CardViewArray班级实施.
它是否正确 ?
这是我的TBL_CardViewArray.h
/**
* Keep TBL_CardView in array
*/
@interface TBL_CardViewArray : NSObject
- (TBL_CardView *)drawCard;
- (void)addCard:(TBL_CardView *)card;
- (NSUInteger)cardsRemaining;
- (NSArray*) cardViewArray;
- (TBL_CardView *)drawRandomCard;
@end
Run Code Online (Sandbox Code Playgroud)
来自TBL_CardViewArray.m的一些重要部分
@implementation TBL_CardViewArray
{
NSMutableArray *_cards;
}
Run Code Online (Sandbox Code Playgroud)
所以我只是使用TBL_CardViewArrayNSMutableArray的包装来存储我的TBL_CardView类.
问题
如何实现countByEnumeratingWithState:objects:count:用于我的TBL_CardViewArray类.
我确实谷歌它,但没有找到一些我可以轻松重用的例子.
我的假设是因为我已经在使用NSMutableArray存储它并不是那么复杂,但我无法弄清楚如何?
nsmutablearray ×10
ios ×6
objective-c ×6
iphone ×2
nsdictionary ×2
cocoa-touch ×1
count ×1
sorting ×1
uikit ×1
xcode4.5 ×1