标签: nsarray

按名称对 NSDocumentDirectory 进行排序

我想按文件名对所有 NSDocumentDirectory 进行排序,但文件夹应该首先按名称排序,然后所有文件按名称排序。

在我的文档目录中,我也有很多文件和文件夹。

我有这样的数组,

_filePathsArray =[[NSFileManager defaultManager] contentsOfDirectoryAtPath:_selectedPath error:Nil];
Run Code Online (Sandbox Code Playgroud)

提前致谢

iphone nsarray nssortdescriptor ios nsdocumentdirectory

2
推荐指数
1
解决办法
643
查看次数

将UIImage添加到数组时无法识别的选择器错误

我存储UIImage在一个NSDictionary,然后使NSDictionary在应用中的另一个地方.gridImages是一个NSMutableArray

NSDictionary *pageDict = [pageArray objectAtIndex:0];

UIImage *pageImage = [pageDict objectForKey:@"image"];

[gridImages addObject:pageImage];
Run Code Online (Sandbox Code Playgroud)

pagedict返回

{
    class = is;
    image = "<UIImage: 0x14e20e10>";
    name = kaka;
    page = 64;
}
Run Code Online (Sandbox Code Playgroud)

这大概是我做的

UIImage *pageImage = [pageDict objectForKey:@"image"];
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将UIImage添加到数组时,我收到此错误:

-[UIImage stringByDeletingPathExtension]: unrecognized selector sent to instance 0x14e20e10
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

编辑:

对于NSDictionary,我尝试存储UIImageas NSData:

NSData *imageData = UIImagePNGRepresentation(textbookImage);
    [pageDict setObject:imageData forKey:@"image"];
    [pageDict setObject:textbookName forKey:@"name"];
    [pageDict setObject:page forKey:@"page"];
    [pageDict setObject:nameOfClass forKey:@"class"];
Run Code Online (Sandbox Code Playgroud)

并解析它像这样:

  NSData *imageData = …
Run Code Online (Sandbox Code Playgroud)

objective-c nsdictionary uiimage nsarray ios

2
推荐指数
1
解决办法
2516
查看次数

在大型NSDictionary中查找最低值和相应的键

我有一个NSDictionary NSString作为键和NSNumber值,如下所示

NSDictionary *dictionary = @{@"Apple" : [NSNumber numberWithInt: 6],
                             @"Banana" : [NSNumber numberWithInt: 1],
                             @"Peach" : [NSNumber numberWithInt: 14],
                             @"Lychee" : [NSNumber numberWithInt: 1]};
Run Code Online (Sandbox Code Playgroud)

在这里,我想找到最低的键和值,在这个例子中将是Lychee : 1和之间的关系Banana: 1.对于一个较小的字典,我只是按照这个答案的建议对所有值进行排序,并根据排名检索数组中的第一个(或绑定的)对象.但是,我想知道是否有办法做到这一点,如果NSDictionary非常大,我可以采取最低的键值对?

谢谢!

objective-c nsdictionary nsarray ios

2
推荐指数
1
解决办法
978
查看次数

如何在NSArray中存储多类型数据?

NSArray *pets = [NSArray arrayWithObjects:@"Cat", @"Dog", @"Rat", nil];
Run Code Online (Sandbox Code Playgroud)

//如何在@"Rat"对象之后将int值456存储在此数组中,+ pet的类型为NSString,因此它不会在while循环中生成错误... ??? 那么我应该使用哪种数据类型来表示可以表示所有nextObject值/对象的宠物指针

NSEnumerator *enumerator = [pets objectEnumerator];
NSString *pet;

while (pet = [enumerator nextObject]) {
NSLog(@"Pet: %@", pet);
}
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsarray ios7

2
推荐指数
1
解决办法
84
查看次数

就地对 Objective-C 数组进行排序

就地排序数组在面向对象编程中很常见。但这似乎不是 Objective-C 中的默认设置。在 Objective-C 中,似乎无论我使用 NSArray 还是 NSMutableArray 我都无法就地排序,而是必须排序到不同的数组:即另一个内存块。这真的正确吗?

NSArray *germanMakes = @[@"Mercedes-Benz", @"BMW", @"Porsche",
                         @"Opel", @"Volkswagen", @"Audi"];
NSArray *sortedMakes = [germanMakes sortedArrayUsingComparator:
    ^NSComparisonResult(id obj1, id obj2) {
        if ([obj1 length] < [obj2 length]) {
            return NSOrderedAscending;
        } else if ([obj1 length] > [obj2 length]) {
            return NSOrderedDescending;
        } else {
            return NSOrderedSame;
        }
}];
NSLog(@"%@", sortedMakes);
Run Code Online (Sandbox Code Playgroud)

sorting objective-c nsmutablearray nsarray ios

2
推荐指数
1
解决办法
997
查看次数

使用范围创建子数组时抛出 NSRangeException

这是我得到的一个非常奇怪的错误。是这样的:

'NSRangeException', reason: '*** -[NSArray subarrayWithRange:]: range {2, 3} extends beyond bounds [0 .. 3]'
Run Code Online (Sandbox Code Playgroud)

我不明白的是,范围 (2,3) 显然不会超出范围 (0,3)

事实上,它在这些范围内,因为我像这样设置了数组和范围:

NSRange range = NSMakeRange([wordArray indexOfObject:letterInWordArray]+1,wordArray.count-1);
NSMutableArray* sortedSubArray = [[NSMutableArray alloc] initWithArray:[wordArray subarrayWithRange:range]];
Run Code Online (Sandbox Code Playgroud)

本质上,我正在遍历一个名为 wordArray 的数组,并且我想创建一个包含我尚未遍历的所有项目的子数组。有人可以帮我从这里出去吗?

objective-c nsarray nsrange nsrangeexception

2
推荐指数
1
解决办法
1391
查看次数

'-[__NSArrayM _fastCStringContents:]: 无法识别的选择器发送到实例

当我尝试将对象添加到可变数组时,我不断收到无法识别的选择器,当在表视图中选择单元格时,我尝试向可变数组添加和删除项目,这是我的代码:

@interface SomeViewController
  @property (nonatomic, strong) NSMutableArray *selectedItems;
@end
Run Code Online (Sandbox Code Playgroud)

查看已加载:

-(void)viewDidLoad {

    [super viewDidLoad];

    self.selectedItems = [[NSMutableArray alloc] init];
}
Run Code Online (Sandbox Code Playgroud)

选择单元格:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    MyCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

    [self.selectedItems addObject:[NSString stringWithFormat:@"%@", cell.contactID]];
Run Code Online (Sandbox Code Playgroud)

MyCell 文件上的联系人 ID 属性为:

@property (strong, nonatomic) NSString *contactID;
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM _fastCStringContents:]: unrecognized selector sent to instance 0x7fc3dd1091b0'
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview nsstring nsarray ios

2
推荐指数
1
解决办法
4080
查看次数

获取 Firebase 文档作为数组

我创建了一个文档,其中包含 Firestore 中的一个数组。

我现在想将该数组存储在我的应用程序本地

我已手动创建一个数组,但如何使用 Firestore 文档中的数据填充它?

//Manually created Array
var devices = [ "Laptop",
                "Tablet",
                "Smartphone",
                "Smartwatch",
                "Games Console"]

override func viewDidLoad() {
    super.viewDidLoad()
    createDevicePicker()
    createToolbar()
    getPickerData()
}

//Function to pull data from Firestore
func getPickerData() {
    let docRef = firebaseDB.collection("devices").document("types")
    docRef.getDocument { (document, error) in
        if let document = document, document.exists {
            //This will print out the data
            var test = document.data()
            print(test)
        } else {
            print("Document does not exist")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的 Firestore DB 的样子

nsarray firebase swift google-cloud-firestore

2
推荐指数
1
解决办法
2528
查看次数

NSArray项目为NSString

在一个方法中,我有以下代码:

NSString* tempString = (NSString*)arg;
NSArray* notificationDetails = [tempString componentsSeparatedByString:@"##"];
NSString* tempString1 = [notificationDetails objectAtIndex:2];
.
.
.
.
.
. 
NSLog(tempString1);
Run Code Online (Sandbox Code Playgroud)

当我编译代码时,它的编译没有任何错误和警告.但是在运行时(在带有断点的调试模式下)它在NSLog语句中崩溃.我遇到的麻烦是在获取"[notificationDetails objectAtIndex:2];"时 这是什么解决方案.

iphone nsstring nsarray

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

iPhone - NSDray到NSArray保留订单

我在一个属性列表中有几个词典,它构成了我游戏的菜单系统,如下所示:

New game
    Easy
    Normal
    Hard
Load game
    Recent
    Older
Options
    Game
    Sound
Run Code Online (Sandbox Code Playgroud)

等等.此列表中的每个项目都是字典.

我使用UINavigationController和UITableViews来显示这个菜单系统.选择项目后,UINavigationController中将推送一个新的UITableViewController以及所选项目的项目.例如,第一个UITableView在其字典中包含"新游戏","加载游戏"和"选项".如果用户选择选项,则创建具有"Game"和"Sound"项(即"Options"的字典)的新UITableViewController.

我用这种方式填充UITableView:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] init] autorelease];
    }

    // Set up the cell...

    cell.text = [[[data keyEnumerator] allObjects] objectAtIndex:indexPath.row];

    // Data is the dictionary..

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

但显然,这会导致项目与属性列表中定义的顺序不同.

在做我想做的事情时,有谁知道如何保留订单?

谢谢.

iphone cocoa cocoa-touch nsdictionary nsarray

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