Handling of paths through sandbox
Handling of paths through sandbox
- Subject: Handling of paths through sandbox
- From: Gabriel Zachmann via Cocoa-dev <email@hidden>
- Date: Tue, 11 Feb 2020 18:00:15 +0100
I have a question regarding the proper handling of paths under Catalina,
some of which go through the Container, some don't.
More specifically, I get the Pictures folder using this line of code:
dir_to_scan = [NSHomeDirectory() stringByAppendingPathComponent: @"Pictures/"]
This gives me a path like
/Users/zach/Library/Containers/com.apple.ScreenSaver.Engine.legacyScreenSaver/Data/Pictures
Then, I start a Spotlight query to collect all images in that folder, like so:
query_ = [[NSMetadataQuery alloc] init];
NSPredicate * predicate = [NSPredicate predicateWithFormat:
@"(kMDItemContentTypeTree = 'public.image') && (kMDItemFSSize > %u) &&
(kMDItemPixelHeight > %u) && (kMDItemPixelWidth > %u)",
excludekB_ * 1024, excludeSize_,
excludeSize_ ];
[query_ setSearchScopes: [NSArray arrayWithObject: dir_to_scan]];
[query_ setPredicate: predicate];
[query_ startQuery];
(Yes, I have a few images in ~/Pictures)
Then, I collect them, which also works fine.
EXCEPT, apparently, Spotlight gives me paths starting with /Users/zach/Pictures
!
(which does make some sense.)
Problem is that I can't just do
[ array_with_all_images addObject: [path substringFromIndex: ([dir_to_scan
length] + 1)] ];
!
I could, of course, handle the case where dir_to_scan = ~/Pictures specially.
But I am wondering whether or not I need to adopt a more general approach,
i.e., could there be other cases where the dir_to_scan goes through the
Container,
whereas Spotlight gives me the direct paths?
If so, what would be the correct approach?
Thanks a lot in advance for all insights.
Best regards, Gabriel
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden