Es ist immer noch nützlich, das Bundle-Bit programmgesteuert setzen zu können, zum Beispiel iPhoto, damit der Ordner iPhoto Library als eine einzige Datei erscheint.
Sie können das Bundle-Bit programmgesteuert mithilfe der Carbon File Manager-API festlegen. Sie müssen sicherstellen, dass Ihre App mit dem Carbon-Framework verknüpft ist, und den Header <Carbon/Carbon.h>
importieren. Diese Anrufe sind 64-Bit-sicher.
- (void)setBundleBitOfFile:(NSString*)path toBool:(BOOL)newValue
{
const char* pathFSR = [path fileSystemRepresentation];
FSRef ref;
OSStatus err = FSPathMakeRef((const UInt8*)pathFSR, &ref, /*isDirectory*/ NULL);
if (err == noErr)
{
struct FSCatalogInfo catInfo;
union FinderInfoTransmuter finderInfoPointers = { .bytes = catInfo.finderInfo };
err = FSGetCatalogInfo(&ref,
kFSCatInfoFinderInfo,
&catInfo,
/*outName*/ NULL,
/*FSSpec*/ NULL,
/*parentRef*/ NULL);
if (err == noErr)
{
if (newValue)
finderInfoPointers.finderInfo->finderFlags |= kHasBundle;
else
finderInfoPointers.finderInfo->finderFlags &= ~kHasBundle;
FSSetCatalogInfo(&ref,
kFSCatInfoFinderInfo,
&catInfo);
}
}
}
- (BOOL)bundleBitOfFile:(NSString*)path
{
BOOL value = NO;
const char* pathFSR = [path fileSystemRepresentation];
FSRef ref;
OSStatus err = FSPathMakeRef((const UInt8*)pathFSR, &ref, /*isDirectory*/ NULL);
if (err == noErr)
{
struct FSCatalogInfo catInfo;
union FinderInfoTransmuter finderInfoPointers = { .bytes = catInfo.finderInfo };
err = FSGetCatalogInfo(&ref,
kFSCatInfoFinderInfo,
&catInfo,
/*outName*/ NULL,
/*FSSpec*/ NULL,
/*parentRef*/ NULL);
if (err == noErr)
{
value = (BOOL)(((finderInfoPointers.finderInfo->finderFlags) & kHasBundle) == kHasBundle);
}
}
return value;
}
Ich möchte einen Ordner als Bündel festlegen. Durch das Dateisystem sieht es also wie eine Datei aus. später möchte ich dieses Paket mit meiner Bewerbung öffnen. Die Frage ist, wie Sie das Attribut des Ordnerbündels durch Kakao setzen. – Remizorrr
ja. aber ich brauche keine Erweiterung. aber zum Beispiel fbp. Und ich muss es programmgesteuert machen. Um einen Ordner zu einem Bündel zu machen, können Sie einen Befehl über Terminal verwenden: SetFile -a B Ordnername. Man Seite für SetFile sagt - -a Attribute Setzt die Dateiattribute Bits wo ... (etc.) B | b Hat Bündel. die Frage ist, wie man das gleiche programmatisch durch Kakao machen. – Remizorrr