标签: nsarray

在NSArray中获取NSDictionary中的所有值

我有一个NSArray充满了NSDictionary对象,每个NSDictionary里面都有一个唯一的ID.我想根据ID查找特定字典,并在我自己的字典中获取该字典的所有信息.

myArray包含:

[index 0] myDictionary object
  name = apple,
  weight = 1 pound,
  number = 294,

[index 1] myDictionary object
  name = pear,
  weight = .5 pound,
  number = 149,

[index 3] myDictionary object (etc...)
Run Code Online (Sandbox Code Playgroud)

我想得到第二个字典对象的名称和重量(我不知道对象的索引...如果只有两个字母,我可以从中制作一个字典[myArray objectAtIndex:1])

所以,比方说我知道数字149.我怎样才能将myArray中的第二个myDictionary对象变成一个新的NSDictionary?

iphone objective-c nsdictionary nsarray

5
推荐指数
1
解决办法
3422
查看次数

核心数据返回NSArrays而不是NSStrings

由于某种原因,所有NSString类型的属性都在我的Article对象中作为NSArrays返回.这是我检索它们的功能:

- (NSArray *)getSavedArticles
{
    NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
    NSError *error = nil;
    NSEntityDescription *entity = [NSEntityDescription 
                                   entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]];
    [fetchRequest setEntity:entity];
    NSSortDescriptor *dateSort = [NSSortDescriptor sortDescriptorWithKey:@"last_opened" ascending:NO];
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:dateSort]];
    NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
    return fetchedObjects;
}
Run Code Online (Sandbox Code Playgroud) 我没有为这些创建NSManagedObjectModel,而是我只是使用KVO访问它们.

//self.data has the array returned from getSavedArticles
NSManagedObject *object = [self.data objectAtIndex:indexPath.row]; 
NSString *path  = [object valueForKey:@"path"];
NSString* id      = [object valueForKey:@"id"];
Run Code Online (Sandbox Code Playgroud)

当我在变量窗格中查看此内容时path,id我看到(__NSArrayI *) ... Variable is not a CFString. …

core-data nsarray ios

5
推荐指数
1
解决办法
375
查看次数

使用arrayWithCapacity比使用数组有什么好处?

在创建数组时没有必要指定数组大小,对吗?那么,为什么arrayWithCapacity必要?如果我将数组的大小设置为小于实际需要的数量,那可以吗?

arrays iphone nsmutablearray nsarray

5
推荐指数
1
解决办法
1062
查看次数

NSPredicate子查询语法

我有一些不友好的字典数组,而这些字典又有数据数组,我试图根据传递谓词的任何内部数组来过滤外部数组.我似乎无法创建一个NSPredicate来使这项工作.我开始时:

NSPredicate *lookupPredicate = [NSPredicate predicateWithFormat:
             @"row_values.property_id == %@ AND row_values.property_value == %@",
               @"47cc67093475061e01000540", @"Male"];

[dataRows filterUsingPredicate:lookupPredicate];
Run Code Online (Sandbox Code Playgroud)

这不返回任何值.我尝试了各种形式的任何形式,但我似乎找不到任何可以解析的东西.同样,目标是仅保留那些外部数组字典,其中内部数组字典内容的任何内容的谓词都为真.我可以看到我咀嚼一天来弄清楚这项工作的咒语......任何想法?

dataRows:
(
 {
    row = 1;
    "row_values" =     (
            {
              "property_id" = 47cc67093475061e01000542;
              "property_value" = "Mr.";
            },
            {
               "property_id" = 47cc67093475061e01000540;
               "property_value" = Male;
            }
     );
 },
 {
    row = 2;
    "row_values" =     (
           {
             "property_id" = 47cc67093475061e01000542;
             "property_value" = "Ms.";
           },
 ...
   }
}
Run Code Online (Sandbox Code Playgroud)

iphone nsarray nspredicate ios

5
推荐指数
1
解决办法
5259
查看次数

过滤NSArray字符串元素

所以,基本上我有一个NSArray.

我希望在过滤那些例如NOT以给定前缀开头的NOT之后得到一个包含初始数组内容的数组.

它认为使用filteredArrayUsingPredicate:是最好的方法; 但我不知道我怎么能这样做......

到目前为止这是我的代码(NSArray实际上是一个类别):

- (NSArray*)filteredByPrefix:(NSString *)pref
{
    NSMutableArray* newArray = [[NSMutableArray alloc] initWithObjects: nil];

    for (NSString* s in self)
    {
        if ([s hasPrefix:pref]) [newArray addObject:s];
    }

    return newArray;
}
Run Code Online (Sandbox Code Playgroud)

它是对Cocoa最友好的方法吗?我想要的是尽可能快的东西......

cocoa objective-c nsarray

5
推荐指数
1
解决办法
5299
查看次数

[__NSArrayM insertObject:atIndex:]:对象不能为零 - 如何确定错误在哪里?

我有异步事件的大项目,有时我有错误 [__NSArrayM insertObject:atIndex:]:对象不能为零,但我不知道在哪里抛出此错误..我怎么能抓住这个错误?我在我操作insertobject的所有地方都设置了断言:atIndex而且没有..

这是堆栈:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '***    -[__NSArrayM insertObject:atIndex:]: object cannot be nil'


*** First throw call stack:

(0x34c352a3 0x32f4597f 0x34b7f8d9 0xc48db 0xc3ced 0xc3b41 0x1178d9 0x148aed 0x103cfd    0x102fc9 0x101f95 0x35f25595 0x35f7a13b 0x35f7a081 0x35f79f65 0x35f79e89 0x35f795c9 0x35f794b1 0x35f67b93 0x35f67833 0xd820b 0x35fc8275 0x3604aea9 0x326efa6f 0x34c0a5df 0x34c0a291 0x34c08f01 0x34b7bebd 0x34b7bd49 0x350b82eb 0x35f5a301 0x62e45 0x62de0)

libc++abi.dylib: terminate called throwing an exception
Run Code Online (Sandbox Code Playgroud)

null objective-c nsarray nserror ios

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

NSArray从其他数组添加对象

我有三个NSArray对象.我需要将此数组的所有对象添加到NSArray名为allMyObjects的对象中.

有NSArray标准的解决方案,例如通过初始化方法,或者我是否需要使用自定义方法从其他数组中检索所有对象并将所有检索到的对象放到我的allMyObjects数组中?

objective-c nsarray ios

5
推荐指数
2
解决办法
3万
查看次数

将NSArray保存到NSUserDefaults无效

我正在尝试保存一个NSArray对象NSUserDefaults,但是当我把它拉NSArray出来时getObject它什么都没有.

我在此处设置了一个断点来计算对象并验证数组中是否有项目

[[NSUserDefaults standardUserDefaults] setObject:mappingResult.array forKey:kArrayOfFoundThings];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

这是我把它们拉出来的地方,数组里面没有任何内容.

NSArray *allAmbulances = [[NSUserDefaults standardUserDefaults] objectForKey:kArrayOfFoundThings]; 
Run Code Online (Sandbox Code Playgroud)

objective-c nsuserdefaults nsarray ios

5
推荐指数
1
解决办法
6191
查看次数

@ [indexPath]做了什么

我按照教程使用了UITableView.完成的代码

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(editingStyle == UITableViewCellEditingStyleDelete)
    {
        Message *message = [messageList objectAtIndex:indexPath.row];
        [self.persistencyService deleteMessagesFor:message.peer];
        [messageList removeObject:message];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:做@[indexPath]什么?它是一样的吗?:

[NSArray arrayWithObject:indexPath]
Run Code Online (Sandbox Code Playgroud)

objective-c literals nsarray

5
推荐指数
1
解决办法
232
查看次数

什么是[index]和[array objectAtIndex:index]之间的区别?

我注意到这两个array[index]并且[array objectAtIndex:index]使用可变数组.有人可以解释他们之间的区别吗?在性能方面,哪一个是最佳实践?

objective-c nsarray objective-c-literals

5
推荐指数
1
解决办法
1079
查看次数