readToEndOfFileInBackgroundAndNotify
Reads to the end of file from the file or communications channel in the background and posts a notification when finished.
- (void)readToEndOfFileInBackgroundAndNotify
Discussion
This method performs an asynchronous
readToEndOfFile
operation on a file or communications channel and posts anNSFileHandleReadToEndOfFileCompletionNotification
. You must call this method from a thread that has an active run loop.[NSFileHandle readToEndOfFileInBackgroundAndNotify]
The notification includes a userInfo dictionary that contains the data read; access this object using the
NSFileHandleNotificationDataItem
key.[NSFileHandle readToEndOfFileInBackgroundAndNotify]
Any object interested in receiving this data asynchronously must add itself as an observer of
NSFileHandleReadToEndOfFileCompletionNotification
. In communication via stream-type sockets, the receiver is often the object returned in the userInfo dictionary of NSFileHandleConnectionAcceptedNotification
.
Example of [NSFileHandle readToEndOfFileInBackgroundAndNotify]
- (void)awakeFromNib
{
NSFileHandle *remoteConnection = [NSFileHandle
fileHandleForReadingAtPath:@"/Users/user/Desktop/file.plist"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(readAllTheData:)
name:NSFileHandleReadToEndOfFileCompletionNotification
object:remoteConnection];
[remoteConnection readToEndOfFileInBackgroundAndNotify];
}
- (void)readAllTheData:(NSNotification *)note {
NSString *errors = nil;
NSData *contentsOfDockFile = [note object];
NSLog(@"%@", contentsOfDockFile);
NSDictionary *testing = [NSPropertyListSerialization
propertyListFromData:contentsOfDockFile
mutabilityOption:NSPropertyListImmutable format:nil
errorDescription:&errors];
NSLog(@"%@", testing);
[[NSNotificationCenter defaultCenter] removeObserver:self
name:NSFileHandleReadToEndOfFileCompletionNotification object:[note
object]];
[testing release];
}
{
NSFileHandle *remoteConnection = [NSFileHandle
fileHandleForReadingAtPath:@"/Users/user/Desktop/file.plist"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(readAllTheData:)
name:NSFileHandleReadToEndOfFileCompletionNotification
object:remoteConnection];
[remoteConnection readToEndOfFileInBackgroundAndNotify];
}
- (void)readAllTheData:(NSNotification *)note {
NSString *errors = nil;
NSData *contentsOfDockFile = [note object];
NSLog(@"%@", contentsOfDockFile);
NSDictionary *testing = [NSPropertyListSerialization
propertyListFromData:contentsOfDockFile
mutabilityOption:NSPropertyListImmutable format:nil
errorDescription:&errors];
NSLog(@"%@", testing);
[[NSNotificationCenter defaultCenter] removeObserver:self
name:NSFileHandleReadToEndOfFileCompletionNotification object:[note
object]];
[testing release];
}