我想看看它是如何创建一个数组的.如何查看显示如何完成的.m文件?
我有点像NSSortDescriptor n00b.不过,我认为它是我需要做的正确工具:
我有一个由带有键的对象组成的NSArray,比如"name"和"time".这是一个例子,而不是用语言表达它:
input:
name: time
B: 4
C: 8
B: 5
C: 4
A: 3
C: 2
A: 1
A: 7
B: 6
desired output:
name: time
A: 1 <---
A: 3
A: 7
C: 2 <---
C: 4
C: 8
B: 4 <---
B: 5
B: 6
Run Code Online (Sandbox Code Playgroud)
因此,值按"时间"排序,并按"名称"分组.A首先是因为他的时间值最小,而A的所有值都是相继的.然后是C,他的所有价值都是第二小的时间价值.我已经指出了确定名称排序方式的值; 在每个名称组中,按时间排序.
如何以最有效的方式从输入到输出NSArray?(cpu-和内存方面,不一定是代码方式.)我如何为此构造NSSortDescriptors,或使用任何其他方法?我不想自己动手,除非这是最有效的方式.
我写了一些使用的代码stringWithContentsOfURL,但事实证明它已被弃用.你能帮我换一下吗?这是我的代码:
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
NSArray *listItems = [locationString componentsSeparatedByString:@","];
Run Code Online (Sandbox Code Playgroud)
此外,有人可以有一些示例代码来说明它是如何工作的吗?原始代码的编码是什么(在上面的2行中)?
我想保持兼容性,那么我应该为编码选择什么?错误意味着什么,它用于什么?
我正在从互联网解析一些JSON,然后将它们添加到一个数组,这是我的UITableView的数据源.我不确定何时应该发布我的阵列?
.h:物品
@property(nonatomic,retain)NSMutableArray* items;
Run Code Online (Sandbox Code Playgroud)
.m:connectionDidFinishLoading
// fetch succeeded
NSString* json_string = [[NSString alloc] initWithData:retrievedData encoding:NSUTF8StringEncoding];
//Check ST status
int status = [[[[json_string objectFromJSONString] valueForKey:@"response"] valueForKey:@"status"]intValue];
//NSLog(@"Status: %d", status);
items = [[NSMutableArray alloc] init];
NSDictionary* messages = [[NSDictionary alloc] init];
switch (status) {
case 200:
messages = [[[json_string objectFromJSONString] valueForKey:@"messages"] valueForKey:@"message"];
for (NSDictionary *message in messages)
{
[items addObject:message];
}
[self.tableView reloadData];
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud) 如何在目标C中将NSMutableArray转换为NSArray,即不使用逐个添加对象的循环.
可能重复:
如何遍历NSArray?
这是我的代码(例如):
NSArray *myArray = [NSArray arrayWithObjects:@"Red", @"Blue", @"Green", nil];
Run Code Online (Sandbox Code Playgroud)
我希望循环通过数组将每个字符串打印到控制台.
谢谢.
我已经看到了一些使用NSArray indexOfObjectPassingTest的例子,但我无法使它们工作(它们不会返回有效的索引).所以现在我正在尝试使用内联块.我通过typedef一个块,然后将其设置为属性,合成它,并在构造函数中初始化它来完成它.然而,这种方式使整个点变得无声,因为我可以轻松地创建一个方法并使用它(减少打字,减少工作量).
我想要实现的是这样的事情:
Observations *obs = [self.myAppointment.OBSERVATIONS objectAtIndex: ^NSInteger (NSString *keyword){
for (Observations *obs in self.myAppointment.OBSERVATIONS) {
if ([obs.TIME isEqualToString:keyword] == YES) return (NSInteger)[self.myAppointment.OBSERVATIONS indexOfObject:obs];
}
return (NSInteger)-1;
}];
Run Code Online (Sandbox Code Playgroud)
然而,Xcode根本就没有它.我尝试过不同的变体,但是内联声明它似乎是一个问题,这很奇怪,因为正如我所说的那样,键入它,声明和合成它的工作原理如下:
Observations *obs = [self.myAppointment.OBSERVATIONS objectAtIndex:findObs(keyword)];
Run Code Online (Sandbox Code Playgroud)
findObs再次是一个定义的块,它做同样的事情.这是一个语法问题,还是我错过了其他更重要的东西?
你如何从带有字典的NSArray中获得最大的价值?
假设我有NSArray包含带有"年龄","姓名"等字典的词典.现在我想得到年龄最大的记录.这有可能与一些KVC魔术?或者我是否必须以"手动"的方式进行迭代?
我尝试过类似的东西:
int max = [[numbers valueForKeyPath:@"@max.intValue"] intValue];
Run Code Online (Sandbox Code Playgroud) 例.我有一个包含15个对象的数组.我想从给定的索引开始枚举.比如从索引5开始,然后是上面的索引,索引在下面,上面,下面......我不希望它环绕,而是停止并继续在未探索的方向.
所以我的例子中的索引顺序是.5,6,4,7,3,8,2,9,1,10,0,11,12,13,14
如何才能做到这一点?
我想从2 NSArray添加对象到NSMutableArray.我不知道这个.
我的代码:
@interface ViewController : UITableViewController
{
NSArray *animal;
NSArray *color;
NSMutableArray *all;
}
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
animal = [[NSArray alloc]initWithObjects:@"Lion",@"Tiger",@"Dog",@"Cat",@"Sheep",@"Wolf", nil];
color = [[NSArray alloc]initWithObjects:@"Blue",@"Red",@"Yellow",@"Green",@"Black", nil];
all = ??? ; //how to add object from animal and color array in all
}
Run Code Online (Sandbox Code Playgroud) nsarray ×10
objective-c ×7
ios ×3
iphone ×3
cocoa ×2
cocoa-touch ×2
arrays ×1
css ×1
enumeration ×1
for-loop ×1
memory ×1
nsstring ×1
sorting ×1
uikit ×1
xml ×1